使用 Dask 将 Parquet 文件拆分成较小的块

3
我正在尝试使用以下代码使用DASK拆分Parquet文件。
import dask.dataframe as pd
df = pd.read_parquet(dataset_path, chunksize="100MB")
df.repartition(partition_size="100MB")
pd.to_parquet(df,output_path)

我的输入只有一个物理文件,即file.parquet

这个脚本的输出也只有一个文件,即part.0.parquet。

根据partition_size和chunksize参数,我应该有多个输出文件。

如果能提供帮助,将不胜感激。

1个回答

6

df.repartition(partition_size="100MB") 返回一个Dask Dataframe

df = df.repartition(partition_size="100MB")

您可以通过查看df.npartitions来检查创建的分区数量。

此外,您可以使用以下内容编写Parquet文件:

df.to_parquet(output_path)

因为Parquet文件是用来处理大文件的,所以在写入Parquet文件时,您应该考虑使用参数compression=
你会得到你所期望的结果。
注意:写入import dask.dataframe as pd是误导性的,因为通常使用import dask.dataframe as dd

Chunksize已被弃用。我如何通过新的可用功能获得相同的示例? - FábioRB
您不必使用chunksize;Dask旨在处理非常大的文件。 - DavidK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接