如何在Rust中使用Polars按列分区保存Parquet文件?
Polars按列分区保存Parquet文件的实现方法
Polars完全支持按列分区保存Parquet文件,对应操作可通过ParquetWriter的partition_by方法实现,和pandas中to_parquet的partition_cols参数作用一致。
你可以修改原有代码,通过partition_by指定分区列,示例如下:
use polars::prelude::*; use std::fs::File; use std::io::Cursor; pub fn store(data: Vec<Data>) { let json = serde_json::to_string(&data).unwrap(); let cursor = Cursor::new(json); let mut df: DataFrame = JsonReader::new(cursor) .finish() .unwrap(); // 替换为你需要作为分区依据的列名,比如"category" let partition_cols = ["category"]; let mut buffer = File::create("foo.parquet").unwrap(); // 建议将后缀改为.parquet更规范 let pw = ParquetWriter::new(buffer) .partition_by(&partition_cols); pw.finish(&mut df).unwrap(); println!("{:?}", df) }
当你运行这段代码时,Polars会根据指定列的不同取值自动创建对应的子目录结构,每个子目录下存储对应分区的Parquet数据文件。
内容的提问来源于stack exchange,提问作者Finlay Weber
相关产品推荐
相关产品推荐

