gpt4 book ai didi

python - PyArrow:增量使用 ParquetWriter 而不将整个数据集保存在内存中(比内存 Parquet 文件大)

转载 作者:行者123 更新时间:2023-12-04 14:11:34 27 4
gpt4 key购买 nike

我正在尝试将一个大的 Parquet 文件写入磁盘(比内存大)。我天真地以为我可以聪明地使用 ParquetWriter 和 write_table 来增量写入文件,像这样(POC):

import pyarrow as pa
import pyarrow.parquet as pq
import pickle
import time

arrow_schema = pickle.load(open('schema.pickle', 'rb'))
rows_dataframe = pickle.load(open('rows.pickle', 'rb'))

output_file = 'test.parq'

with pq.ParquetWriter(
output_file,
arrow_schema,
compression='snappy',
allow_truncated_timestamps=True,
version='2.0', # Highest available schema
data_page_version='2.0', # Highest available schema
) as writer:
for rows_dataframe in function_that_yields_data()
writer.write_table(
pa.Table.from_pydict(
rows_dataframe,
arrow_schema
)
)
但即使我正在产生块(在我的例子中是 10 000 行)并使用 write_table它仍然将整个数据集保存在内存中。
结果证明 ParquetWriter 在增量写入磁盘时将整个数据集保存在内存中。
无论如何,是否强制 ParquetWriter 不将整个数据集保存在内存中,或者根本不可能有充分的理由?

最佳答案

基于 Arrow bug report 的分析这可能是由元数据收集引起的,元数据只能在文件关闭时刷新。

关于python - PyArrow:增量使用 ParquetWriter 而不将整个数据集保存在内存中(比内存 Parquet 文件大),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63891231/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com