Разделите файл паркета на более мелкие куски, используя dask - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь разделить файл паркета с помощью 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, у меня должно быть несколько файлов на выходе

Любая помощь приветствуется

1 Ответ

2 голосов
/ 25 января 2020

df.repartition(partition_size="100MB") возвращает Dask Dataframe .

Вы должны написать:

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

Вы можете проверить количество созданных разделов, взглянув на df.npartitions

Кроме того, вы можете использовать следующие файлы для записи своих файлов паркета:

df.to_parquet(output_path)

Поскольку файлы паркета предназначены для работы с большими файлами , вам также следует рассмотреть возможность использования Аргумент compression= при написании паркетных файлов.

Вы должны получить то, что ожидаете .

NB: Запись import dask.dataframe as pd вводит в заблуждение потому что import dask.dataframe as dd обычно используется

...