首页 > 解决方案 > 使用 dask 将镶木地板文件拆分成更小的块

问题描述

我正在尝试使用以下代码使用 DASK 拆分镶木地板文件

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 参数,我应该在输出中有多个文件

任何帮助,将不胜感激

标签: pythondata-sciencedask

解决方案


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

你必须写:

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

您可以查看创建的分区数df.npartitions

此外,您可以使用以下内容编写镶木地板文件:

df.to_parquet(output_path)

因为 Parquet 文件旨在处理大文件compression=,所以在编写 parquet 文件时还应该考虑使用该参数。

你应该得到你所期望的。

注意:写作import dask.dataframe as pd具有误导性,因为import dask.dataframe as dd常用


推荐阅读