将小 Parquet 文件合并为单个大 Parquet 文件

0 python out-of-memory dataframe pandas parquet

我一直在尝试合并小镶木地板文件,每个文件有 10 k 行,并且每组小文件的数量将为 60-100。因此,合并后的 parquet 文件中至少包含约 600k 行。

我一直在尝试使用 pandas concat。它可以很好地合并大约 10-15 个小文件。

但由于该集合可能由 50-100 个文件组成。运行 python 脚本时违反内存限制时该进程被杀死

所以我正在寻找一种内存有效的方法来合并 100 个文件集中任意数量的小镶木地板

使用 pandas read parquet 来读取每个单独的数据帧并将它们与 pd.conact(all dataframe) 组合起来

除了 pandas 之外还有更好的库吗?或者如果可能的话,在 pandas 中如何高效地完成它。

时间不是约束。它也可以运行很长时间。

Art*_*hur 6

您可以逐个打开文件并将它们附加到 parquet 文件中。最好使用 pyarrow 来实现此目的。

import pyarrow.parquet as pq

files = ["table1.parquet", "table2.parquet"]

schema = pq.ParquetFile(files[0]).schema_arrow
with pq.ParquetWriter("output.parquet", schema=schema) as writer:
    for file in files:
        writer.write_table(pq.read_table(file, schema=schema))
Run Code Online (Sandbox Code Playgroud)