Как указать количество разделов, читающих паркет в кадре данных Dask?
Я прочитал мои данные о паркете следующим образом:
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
потому что мой паркет разбит на разделы, и я хочу избежать загрузки некоторых категорий.
У меня есть два вопроса здесь:
Как я могу сказать Dask, какое количество разделов я хочу иметь в моем фрейме данных?
Сколько разделов создаст Dask по умолчанию?
1 ответ
Решение
Во-первых, я подозреваю, что dd.read_parquet
Функция отлично работает с многораздельными или многофайловыми наборами данных паркета.
Во-вторых, если вы используете dd.from_delayed
, тогда каждый отложенный вызов приводит к одному разделу. Так что в этом случае у вас будет столько разделов, сколько у вас есть элементов dfs
итератор. Если вы хотите изменить это, вы можете позвонить repartition
метод потом.