繁体   English   中英

在 Python 中读取 Parquet 文件的内存占用最少的方法是什么? 可以逐行吗?

[英]What is the least memory-intensive way to read a Parquet file in Python? Is line-by-line possible?

我正在编写 lambda 来读取存储在 Parquet 文件中的记录,将它们重组为partition_key: {json_record}格式,并将记录提交到 Kafka 队列。 我想知道是否有任何方法可以在不一次将整个表格读入 memory 的情况下做到这一点。

我尝试使用fastparquet库中的iter_row_groups方法,但我的记录只有一个行组,所以我仍在将整个表加载到 memory 中。 我注意到BufferReaderpyarrow有一个readlines方法,但它没有实现。 Parquet的真正逐行阅读是不可能的吗?

可能值得指出的是,我正在使用存储在 S3 中的 Parquet 文件,因此理想情况下,解决方案能够在StreamingBody中读取

我建议你可以看看 DuckDB 和 polars:

当然可以将查询限制为前 1000 个结果。 如果你有一些行索引用duckdb 和 SELECT 遍历整个镶木地板,那么 WHERE 应该很容易。

您可以尝试使用 row_count_name 和 row_count_offset。 同样,使用现有的行索引列将行作为块读取是可行的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM