Я использую Apache Spark и Hadoop для создания таблиц Hive в моем хранилище данных.
Моя проблема в том, что моя таблица фактов разделена по полю даты (один день / раздел), а размер составляет около 4-50 ГБ в день.Каждый раздел содержит около 100-200 файлов (зависит от моей конфигурации spark.sql.shuffle.partitions
).
Это не проблема при запросе данных в течение нескольких дней с помощью Spark SQL, потому что число задач вокруг (количество файлов * количество разделов)
Пример: select * from fact_table where partition_key = 20190101
Однако если нам нужно запросить целые данные за один год или более, число задач может быстро возрасти (~ ~ 365 * количество файлов * количество лет). Если мы загружаем данные в фрейм данных и перераспределяем их перед присоединением или выполняем некоторые действия, возможно,однако мы можем оптимизировать этот процесс, если, используя SparkSQL для запроса данных (предоставить данные для какого-либо инструмента BI), я не знаю, как управлять этими задачами и оптимизировать запросы
Так как же нам оптимизировать количество задача производительность?