我正在编写一个lambda来读取存储在Parquet文件中的记录,将它们重组为partition_key: {json_record}
格式,并将记录提交到Kafka队列中。我想知道,如果不立即将整个表读入内存中,是否有任何方法可以做到这一点。
我尝试使用来自iter_row_groups
库的fastparquet
方法,但是我的记录只有一行组,所以我仍然将整个表加载到内存中。我注意到来自pyarrow
的pyarrow
有一个readlines
方法,但是它没有实现。是真的逐行阅读是不可能的吗?
可能值得指出的是,我正在处理存储在S3中的Parquet文件,因此理想情况下,解决方案应该能够在StreamingBody
中读取
发布于 2022-08-09 14:21:24
我建议你看看DuckDB和polars:
https://duckdb.org/2021/06/25/querying-parquet.html
当然,可以将查询限制在前1000名结果上。如果您得到了一些行索引,用duckdb迭代整个地板,并选择应该容易的位置。
https://pola-rs.github.io/polars/py-polars/html/reference/api/polars.scan_parquet.html
你可以用row_count_name和row_count_offset做实验。同样,使用现有的行索引列,将行作为块读取是可行的。
https://stackoverflow.com/questions/73242502
复制相似问题