Получить несжатый размер набора данных в HDFS после чтения Spark - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь улучшить производительность моего приложения Spark. С этой целью я пытаюсь определить оптимальное количество случайных разделов для набора данных. Я прочитал из нескольких источников, что каждый раздел должен быть около 128 МБ.

Итак, если у меня есть файл объемом 1 ГБ, мне потребуется около 8 разделов. Но мой вопрос, как мне найти размер файла? Я знаю, что могу найти размер файла в hdfs, используя следующее

hdfs dfs -du -s {data_path}

Но насколько я понимаю, это сжатый размер, и фактический размер файла отличается. (Spark использует кодек сжатия при записи файлов паркета, по умолчанию snappy). И это приводит меня к двум вопросам на самом деле

  1. Как узнать фактический несжатый размер файла?
  2. Какое количество разделов шаффла должно быть основано на сжатом или фактическом размере?

1 Ответ

1 голос
/ 27 мая 2019

Случайные разделы не зависят от размера данных.
Данные распаковываются и затем перетасовываются в зависимости от количества случайных разделов (с использованием хеш-разделителя, разделителя диапазона и т. Д.).
Как правило, перетасовываются разделы
1. Увеличить параллелизм, доступный на ступени редуктора.
2. Уменьшить объем данных, обрабатываемых разделами в случайном порядке (если мы наблюдаем разливы или это происходит, то этап уменьшения занимает много памяти)

Я прочитал из нескольких источников, что каждый раздел должен иметь размер около 128 МБ.

Это применимо только к этапам картографирования. Размеры разделения в маппере вычисляются на основе размера сжатых данных. Вы можете настроить размер разделителей мапперов используя spark.sql.files.maxPartitionBytes

А разделы в случайном порядке (сконфигурированные с использованием spark.sql.shuffle.partitions, по умолчанию 200) относятся к ступеням редуктора.

Короче говоря, сжатие вступает в игру только на этапах картографирования, а не на этапах редуктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...