Как указать количество разделов, читающих паркет в кадре данных 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 метод потом.

Другие вопросы по тегам