Удаляет ли Insert Overwrite данные и раздел в кусте? - PullRequest
0 голосов
/ 12 ноября 2018

Я создаю раздел по году и месяцу. Предположим, предыдущий раздел существует в целевой таблице кустов year = 2018 and month = 10 and month = 11. Теперь поступают новые данные, имеющие только year = 2018 and month = 11. Так что мой вопрос будет вставить перезаписать удалить данные и раздел для month = 10? Пожалуйста, предложите мне решение, так как я хочу удалить данные и раздел для month = 10 тоже. Спасибо

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Если вы хотите удалить все существующие разделы и сохранить только данные нового месяца, вы можете использовать команду 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);
0 голосов
/ 13 ноября 2018

Когда Hive пытается «ВСТАВИТЬ ПЕРЕЗАПИСАТЬ» в раздел внешней таблицы в существующем каталоге, в зависимости от того, существует ли определение раздела в метастазе или нет, Hive будет вести себя по-разному:

a) если определение раздела не существует, он не будет пытаться угадать, где находятся каталоги целевого раздела (статические или динамические разделы), поэтому он не сможет удалить существующие файлы в тех разделах, которые будут записаны в

b) если определение раздела существует, оно попытается удалить все файлы в каталоге целевого раздела перед записью новых данных в эти каталоги.

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

...