Регенерация таблиц в Hive безопасно и последовательно - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над системой, которая генерирует данные в конвейере данных, начиная с исходных данных и создавая различные промежуточные таблицы, чтобы получить финальную таблицу, которую я назову final_table.

Прямо сейчас создание final_table выполняется с помощью запроса, подобного следующему:

DROP TABLE IF EXISTS final_table;

CREATE TABLE final_table AS
( <massive SELECT statement> );

Проблема, с которой я сталкиваюсь, заключается в следующем: если массивный оператор SELECT завершается неудачно (и это так), то мы находимся в плохом состоянии без final_table вообще.

Я планирую изменить код, чтобы сделать следующее, но хотел убедиться, что не было лучшего способа. Схема еще не стабилизирована и может измениться в будущем, поэтому INSERT OVERWRITE пока не вариант.

CREATE TABLE final_table_staging AS 
( <massive SELECT statement> );

DROP TABLE IF EXISTS final_table;

CREATE TABLE final_table AS (SELECT * FROM final_table_staging);

DROP TABLE final_table_staging;

Есть ли другой способ написать его, чтобы объявить и сделать комбинацию drop + create как atomi c?

Смежный вопрос: HIVE - ВСТАВИТЬ ПЕРЕЗАПИСЬ против DROP TABLE + CREATE TABLE + INSERT INTO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...