如何将 Polars DataFrame 转换为 Vec<RecordBatch>?

How do I convert a Polars DataFrame to Vec<RecordBatch>?

提问人:user21083829 提问时间:1/28/2023 最后编辑:user21083829 更新时间:2/1/2023 访问量:598

问:

编辑:希望更简洁,我该怎么做?

use polars::prelude::{DataFrame, NamedFrom, df};
use arrow::record_batch::RecordBatch;

fn main() {

    let polars_df: DataFrame = df!("cat_data"     => &[1.0, 2.0, 3.0, 4.0],
                                   "dog_data"     => &[1.0, 2.0, 3.0, 4.0],
                                   "giraffe_data" => &[1.0, 2.0, 3.0, 4.0]).unwrap();

    let batches: Vec<RecordBatch> = polars_df/*  ???????   */;

    for batch in batches {
        println!("{:?}", batch);
    }
}

初始职位:

如何从 Polars DataFrame 开始,而不是下面使用的 Datafusion DataFrame,其中结果变量的计算结果为 Vec<arrow::record_batch::RecordBatch>

let results = df.collect().await.map_err(to_tonic_err)?;

这是上面 Datafusion 使用的收集函数。

通常,我已经尝试过使用iter_chunks()iter_chunks_physical()等迭代器来解决这个问题,但都失败了。

对于更广泛的上下文,我正在通过此数据融合示例研究箭头飞行的 Polars 实现。

apache-arrow rust-polars apache-arrow-flight apache-arrow-datafusion

评论

0赞 Simson 1/28/2023
检查并链接到您提到的 Dataframe 创建的 rust 文档。
0赞 user21083829 1/28/2023
谢谢!这些链接更有帮助吗?

答: 暂无答案