У меня есть большая таблица улья (~ 9 миллиардов записей и ~ 45 ГБ в формате орков). Я использую Spark sql для профилирования таблицы, но на выполнение каких-либо операций с этим уходит слишком много времени. Просто подсчет самого фрейма входных данных занимает ~ 11 минут. На выполнение min, max и avg для любого столбца уходит более полутора часов.
Я работаю над кластером с ограниченными ресурсами (поскольку он единственный доступный), всего 9 исполнителей, каждый с 2 ядрами и 5 ГБ памяти на каждого исполнителя, распределенных по 3 физическим узлам.
Есть ли способ оптимизировать это, скажем, сократить время выполнения всех агрегатных функций в каждом столбце до менее 30 минут, по крайней мере, с тем же кластером, или увеличение моих ресурсов - единственный способ? что я лично не очень хочу делать. Одно из решений, с которыми я столкнулся для ускорения операций с фреймами данных, - это их кеширование. Но я не думаю, что это реальный вариант в моем случае.
Во всех реальных сценариях, с которыми я сталкивался, для такого рода нагрузки используются огромные кластеры.
Любая помощь приветствуется. Я использую Spark 1.6.0 в автономном режиме с сериализатором kryo.