Импала - заменить все данные в разделе таблицы

У меня есть программа, которая генерирует все данные, касающиеся раздела таблицы Impala. Эта программа записывает данные в текстовый файл HDFS.

Как (физически) удалить все данные, ранее принадлежавшие разделу, и заменить их данными в новом текстовом файле, преобразованном в формат паркета?

Если я физически удаляю старые файлы Parquet, составляющие раздел, используя сырой HDFS API, это будет мешать Impala?

1 ответ

Решение

Создайте таблицу для ваших текстовых файлов:

create external table stg_table (...) location '<your text file in hdfs>';

После изменения внешних данных вы должны обновить их:

refresh stg_table;

Затем вставьте в свой целевой стол

insert overwrite table target_table select * from stg_table;

Если ваша целевая таблица секционирована, сделайте это:

insert overwrite table target_table partiton(<partition spec>) select * from stg_table;

Ключевое слово "перезаписать" делает свое дело, оно перезаписывает таблицу или раздел.

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