В настоящее время у меня есть задание ETL, которое читает несколько таблиц, выполняет определенные преобразования и записывает их обратно в ежедневную таблицу.
Я использую следующий запрос в spark sql "INSERT INTO dbname.tablename PARTITION (year_month) SELECT * from Spark_temp_table" Таблица назначения, в которую вставляются все эти записи, разбита нагод X уровень месяца.Записи, которые генерируются ежедневно, не так много, поэтому я делю их на уровне года X месяца.
Однако, когда я проверяю раздел, он имеет небольшие ~ 50 МБ файлы для каждого дня выполнения моего кода (код должен выполняться ежедневно), и в конечном итоге у меня будет около 30 файлов в моем разделе общим объемом ~ 1500 МБ
Я хочу знать, есть ли способ для меня просто создать один (или, может быть, 2-3 файла в соответствии с ограничениями размера блока) в одном разделе, в то время как я добавляю свои записи ежедневно
Я думаю, что могу сделать это, просто прочитав все из соответствующего раздела в моем искровом фрейме данных, добавив его с последней записью и переделив заново перед записью.Как я могу гарантировать, что я только читаю данные из соответствующего раздела, и только этот раздел перезаписан с меньшим количеством файлов?