如何指定将镶木地板读入 Dask 数据帧的分区数?
How to specify the number of partitions reading parquet into a Dask dataframe?
我读取了我的镶木地板数据如下:
file_names = glob.glob('./events/*/*/*/*/*/part*.parquet')
pf = fp.ParquetFile(file_names, root='./events')
pf.cats = {'customer': pf.cats['customer']}
dfs = (delayed(pf.read_row_group_file)(rg, pf.columns, pf.cats) for rg in pf.row_groups)
df = dd.from_delayed(dfs)
我不能使用 dd.read_parquet
,因为我的 parquet 是分区的,我想避免加载一些分类。
我这里有两个问题:
我如何告诉 Dask 我希望我的数据帧有多少个分区?
Dask默认会创建多少个分区?
首先,我怀疑 dd.read_parquet
函数适用于分区或 multi-file parquet 数据集。
其次,如果您使用的是dd.from_delayed
,则每次延迟调用都会产生一个分区。因此,在这种情况下,您拥有的分区数与 dfs
迭代器的元素数一样多。如果你想改变这个,你可以在之后调用 repartition
方法。
我读取了我的镶木地板数据如下:
file_names = glob.glob('./events/*/*/*/*/*/part*.parquet')
pf = fp.ParquetFile(file_names, root='./events')
pf.cats = {'customer': pf.cats['customer']}
dfs = (delayed(pf.read_row_group_file)(rg, pf.columns, pf.cats) for rg in pf.row_groups)
df = dd.from_delayed(dfs)
我不能使用 dd.read_parquet
,因为我的 parquet 是分区的,我想避免加载一些分类。
我这里有两个问题:
我如何告诉 Dask 我希望我的数据帧有多少个分区?
Dask默认会创建多少个分区?
首先,我怀疑 dd.read_parquet
函数适用于分区或 multi-file parquet 数据集。
其次,如果您使用的是dd.from_delayed
,则每次延迟调用都会产生一个分区。因此,在这种情况下,您拥有的分区数与 dfs
迭代器的元素数一样多。如果你想改变这个,你可以在之后调用 repartition
方法。