Удаляет ли Insert Overwrite данные и раздел в кусте?
Я создаю раздел на год и месяц. Предположим, что предыдущий раздел существует в целевой таблице кустов year = 2018 and month = 10 and month = 11
, Теперь приходят новые данные, имеющие year = 2018 and month = 11
только. Так что мой вопрос будет вставить перезаписать удалить данные и раздел для month = 10
? Пожалуйста, предложите мне решение, так как я хочу удалить данные и раздел для month = 10
тоже. Спасибо
2 ответа
Если вы хотите удалить все существующие разделы и сохранить только данные нового месяца, вы можете использовать DROP PARTITION
Команда с компараторами.
Например: если есть разделы на год 2018 и месяц 10 и до этого. Вы можете настроить с помощью одного
// If there is always only one partition
alter table part_t drop partition (year=2003,month=1);
// If there are multiple partitions, you can use < comparator
alter table part_t drop partition (year <2003,month<1);
Когда Hive пытается "ВСТАВИТЬ ПЕРЕЗАПИСАТЬ" в раздел внешней таблицы в существующем каталоге, в зависимости от того, существует ли определение раздела в метастазе или нет, Hive будет вести себя по-разному:
a) если определение раздела не существует, он не будет пытаться угадать, где находятся каталоги целевого раздела (статические или динамические разделы), поэтому он не сможет удалить существующие файлы в тех разделах, которые будут записаны в
b) если определение раздела существует, оно попытается удалить все файлы в каталоге целевого раздела перед записью новых данных в эти каталоги.
Итак, в двух словах, в вашем случае, он не будет удалять данные.