Я работаю над конвейером, который будет работать ежедневно.Он включает в себя объединение двух таблиц, скажем, x & y (примерно 18 МБ и 1,5 ГБ соответственно) и загрузку вывода объединения в финальную таблицу.
Ниже приведены факты об окружающей среде,
Для таблицы x:
- Размер данных: 18 МБ
- Количество файлов в разделе: ~ 191
- тип файла: паркет
Для таблицы y:
- Размер данных: 1,5 ГБ
- Количество файлов враздел: ~ 3200
- тип файла: паркет
Теперь проблема заключается в следующем:
Hive и Spark дают одинаковую производительность (время занимает одно и то же)
Я пробовал разные комбинации ресурсов для работы с искрой.
Например:
- исполнителей: 50 памяти: 20 ГБ ядер: 5
- исполнителей: 70 памяти: 20 ГБ ядер: 5
- исполнителей: 1 память: 20 ГБ ядер: 5
Все три комбинации дают одинаковую производительность.Я не уверен, что мне здесь не хватает.
Я также пытался транслировать небольшую таблицу 'x', чтобы избежать случайного перемешивания при присоединении, но не сильно улучшил производительность.
Одним из ключевых замечаний является:
70% времени выполнения тратится на чтение большой таблицы 'y', и я предполагаю, что это связано с большим количеством файлов на раздел.
Я не уверен, насколько улейдавая ту же производительность.
Просьба предложить.