Вставка нескольких таблиц в одну таблицу в hive

У меня есть разделенная таблица улья, разделенная на столбец «часть». В таблице есть два значения раздела: part = 'good' и part = 'bad'.

Мне нужно переместить запись из «плохого» раздела в «хороший» раздел и перезаписать «плохой» раздел, чтобы удалить эту перемещенную запись. Чтобы усложнить это, я ищу способ сделать это в одном запросе, поскольку в противном случае обработка исключений была бы сложной.

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

from tbl_partition
insert into tbl_partition partition (part='good') select a,b,c where a='a' and part='bad' -- this is where a record is moved from bad to good
insert overwrite table tbl_partition partition (part='bad') select a,b,c where part='bad' and a not in ('a'); -- Overwrite the bad partition excluding already moved record

Но в приведенном выше запросе всегда выполняется вставка, а не одна вставка, а другая вставка перезаписывает !!

Я даже попытался использовать общее табличное выражение и использовал общую таблицу для одновременной вставки в эту таблицу, но безуспешно!

Есть ли другой способ достичь этого с помощью одного запроса, или я что-то делаю не так на предыдущем шаге?

Обратите внимание, что я делаю это в кластере HDP с ульем 1.2.

Создайте пустой раздел newbad; мульти-вставка к good и newbad; drop bad; переименуйте newbad в bad. 4 команды. Но это работает.

Samson Scharfrichter 31.10.2018 20:47

Хорошая идея. Я могу импровизировать над этой идеей, поскольку я не полностью объяснил вышеописанный вариант использования. Спасибо. Однако обработка исключений может быть сложной задачей, поскольку здесь задействовано несколько шагов!

Adiga 05.11.2018 06:50

В распределенных системах все является «сложной задачей» - и даже когда фреймворк пытается скрыть сложность, иногда он попадает в крайний случай (или ошибку) и взрывается в ваших руках ... Никогда не предполагайте, что у вас есть безопасный путь, получите готов к ручному восстановлению на любом этапе любой работы.

Samson Scharfrichter 05.11.2018 09:38
0
3
735
0

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