2016-05-06 1 views
0

Я планирую использовать Spark для обработки данных, где каждый отдельный элемент/строка в RDD или DataFrame может иногда быть большим (до нескольких ГБ).Максимальный размер строк в работе Spark с использованием Avro/Parquet

Данные, вероятно, будут храниться в файлах Avro в HDFS.

Очевидно, что каждый исполнитель должен иметь достаточное количество ОЗУ для хранения одной из этих «жирных строк» ​​в памяти, а некоторые - для экономии.

Но существуют ли другие ограничения на размер строки для Spark/HDFS или для обычных форматов сериализации (Avro, Parquet, Sequence File ...)? Например, могут ли отдельные записи/строки в этих форматах быть намного больше, чем размер блока HDFS?

Я знаю, опубликованных ограничений для HBase и Кассандрой, но не Спарк ...

ответ

1

Есть в настоящее время некоторые принципиальные ограничения, связанные с размером блока , как для перегородок в использовании и для перетасовки блоков - оба ограниченный 2GB, который является максимальным размером ByteBuffer (потому что он принимает индекс int, поэтому он ограничен Integer.MAX_VALUE байтами).

Максимальный размер отдельной строки, как правило, должен быть намного меньше максимального размера блока, поскольку каждый раздел обычно содержит много строк, а наибольшие строки могут быть распределены неравномерно между разделами - если случайно раздел содержит необычно большое количество больших строк, это может подтолкнуть его к пределу 2 ГБ, сбой задания.

См:

билеты, относящиеся JIRA для этих вопросов Spark:

 Смежные вопросы

  • Нет связанных вопросов^_^