Мы написали искровое приложение на Scala 2.11, которое работает на автономном кластере Spark 2.1.0. Согласно дизайну/требованиям, мы построили объект строки, имеющий много прямых столбцов, таких как 100, и есть несколько вложенных столбцов, где некоторые из вложенных столбцов также тяжелые, например, с последовательностью от 20 до 30 тысяч. Существует также соответствующий класс case для работы с наборами данных Spark.
Например:
Row(column_01,
column_02...
.....column_150,
column_151 = Seq,
column_152 = Seq...column_160 = Seq)
где некоторые из Seq имеют размер от 20k до 30k.
Меня мало беспокоит, как эти длинные/тяжелые атрибуты для объекта строки влияют на производительность? Какие оптимизации мы можем сделать в коде для повышения производительности? Любые предложения по настройке кластера?
Мы уже работаем над следующими оптимизациями:
- увеличение количества разделов
- Использование формата файла паркета с быстрым сжатием