Я экспериментировал с тем, какие максимальные необработанные данные я могу кэшировать, не влияя на общее время обработки задания в Spark.
Spark Cluster - 2 машины, 12 ядер, 96 ГБ ОЗУ.Я создал 12 рабочих, каждый с 1 ядром и 8 ГБ оперативной памяти.
Я кэшировал паркет размером ~ 2,4 ГБ, что создает объем оперативной памяти около 5,4 ГБ в ОЗУ.На простом задании это занимает ~ 8 секунд (Count -> GroupBY -> Collect).
Я снова кэшировал 6 похожих файлов, каждый паркет по ~ 2,4 ГБ, что создает общий объем памяти около ~ 30 ГБ,снова выполняя ту же задачу (Count -> GroupBY -> Collect) на загруженном кэшированном фрейме данных объемом 5,4 ГБ, занимает ~ 12 сек.
данные представляют собой смесь полей (дата, метка времени, строка, двойное число) ~ 300 столбцовв каждом файле.
Уже пробовали -
Случай 1 - Всего исполнителей - 4, Каждое ядро исполнителя - 3 ядра, Каждая память исполнителя 24 ГБ
Случай 2 - Всего исполнителей - 6, Ядра каждого исполнителя - 2 ядра, Память каждого исполнителя 16 ГБ
Случай 3 - Всего исполнителей - 12, Ядра каждого исполнителя - 1 ядро, Каждая память исполнителя 8 ГБ
Случай 3 дает мне лучшие результаты.
это правильное поведение для искры?
Spark v2.0.2