Удаляет ли 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) если определение раздела существует, оно попытается удалить все файлы в каталоге целевого раздела перед записью новых данных в эти каталоги.

Итак, в двух словах, в вашем случае, он не будет удалять данные.

Другие вопросы по тегам