【发布时间】:2021-05-09 10:33:03
【问题描述】:
我有一些其他格式的大文件(总共约 7,000 个,每个 4GB),我想使用 pyarrow.parquet.write_to_dataset() 将它们存储到分区(hive)目录中以进行快速查询。
目前,我正在使用以下过程遍历所有文件:
import pyarrow as pa
import pyarrow.parquet as pq
for each_file in file_list:
ndarray_temp = reader(each_file)
table_temp = pa.Table.from_arrays(ndarray_temp)
pq.write_to_dataset(table_temp, root_path='xxx', partition_cols=[...])
这非常慢,因为 pq.write_to_dataset() 大约需要 27 秒才能将每个表写入目录(在 SSD 上),并且它会在每个文件夹下创建许多小 parquet 文件。
我的问题是:
-
有没有更好的方法呢?假设我有足够的内存来保存 100 个临时表,我可以一次写这 100 个表吗?
-
每个文件夹下数百个parquet小文件会不会影响读取和过滤性能?是一张一张写很多小表好还是一次写一张大表好?
非常感谢!
T
【问题讨论】:
标签: python hive parquet large-files pyarrow