You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中如何实现Arrow RecordBatch与Polars DataFrame互转?

Rust中Arrow RecordBatch与Polars DataFrame高效互转方案

由于Polars底层基于Arrow构建,二者的互转可以通过Polars提供的原生方法实现零拷贝/极低开销的转换,无需额外序列化操作。

1. RecordBatch 转 Polars DataFrame

直接使用DataFrame::from_record_batch方法,该方法会直接复用Arrow的内存结构,没有数据复制。

示例代码:

use arrow::record_batch::RecordBatch;
use polars::frame::DataFrame;

fn batch_to_df(batch: RecordBatch) -> polars::prelude::Result<DataFrame> {
    DataFrame::from_record_batch(batch)
}

2. Polars DataFrame 转 RecordBatch

使用DataFrame::to_record_batch方法,同样直接暴露底层Arrow数据结构,实现高效转换。

示例代码:

use arrow::record_batch::RecordBatch;
use polars::frame::DataFrame;

fn df_to_batch(df: &DataFrame) -> polars::prelude::Result<RecordBatch> {
    df.to_record_batch()
}

关键注意事项

  • 确保Polars与Arrow的版本兼容,建议在Cargo.toml中锁定二者的兼容版本,避免因依赖版本差异导致转换失败。
  • Polars特有的数据类型(如扩展的列表类型)会自动映射为对应的Arrow标准类型,无需手动处理。

内容的提问来源于stack exchange,提问作者Nikhil Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:25:30