如何指定将镶木地板读入 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 是分区的,我想避免加载一些分类。

我这里有两个问题:

首先,我怀疑 dd.read_parquet 函数适用于分区或 multi-file parquet 数据集。

其次,如果您使用的是dd.from_delayed,则每次延迟调用都会产生一个分区。因此,在这种情况下,您拥有的分区数与 dfs 迭代器的元素数一样多。如果你想改变这个,你可以在之后调用 repartition 方法。