Оцените количество файлов деталей для записи в HDFS от Spark - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу написать Spark Dataframe в формате Parquet.snappy в HDFS.В настоящее время он создает по умолчанию 200 файлов деталей, даже если количество записей в таблице меньше.

Доступна ли любая формула, которая дает приблизительное количество файлов деталей, которые должны быть записаны в HDFS, чтобы чтение могло быть быстрее.

В идеале размер файла детали должен составлять 50-200 МБ.Мне известны функции перераспределения и объединения, которые уменьшают / увеличивают количество файлов деталей.Я ищу номер, на который необходимо перераспределить кадр данных.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

200 является настройкой по умолчанию для spark.sql.shuffle.partitions :

Конфигурирует количество разделов, используемых при перетасовке данных для объединений или объединений.

При записи кадра данных в HDFS каждый раздел будет (примерно) записан в свой собственный файл.Чтобы уменьшить количество файлов, уменьшите количество разделов, изменив параметр spark.sql.shuffle.partitions или используя repartition или coalesce

Количество разделов, которыефактический фрейм данных должен содержать зависит от ряда условий, таких как

  • размер кластера, количество узлов-исполнителей
  • число и тип данных столбцов в фрейме данных
  • насколько хорошоданные могут быть сжаты
0 голосов
/ 26 сентября 2019

Как правило, у вас будет столько же файлов деталей, сколько разделов в вашем Dataframe.

Если вы уверены в общем объеме данных, вы можете попробовать использовать методы coalesce или repartition.

...