Импала - заменить все данные в разделе таблицы
У меня есть программа, которая генерирует все данные, касающиеся раздела таблицы 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;
Ключевое слово "перезаписать" делает свое дело, оно перезаписывает таблицу или раздел.