У меня есть существующая таблица в квадратных скобках, которая содержит YEAR, MONTH, DAY
, но я хочу добавить дополнительное разбиение на , столбец, который не существует в существующей таблице. Это должно учитывать будущие табличные вставки, так что я не должен составлять OVERWRITE
раздел YEAR, MONTH, DAY
каждый раз, когда я беру данные за эту дату; Я могу просто сделать простой INSERT INTO
и создать новый раздел INGESTION_KEY
.Копирование таблицы управления улей путем копирования каталогов разделов на склад
Для начала мне нужна годовая стоимость данных в моей новой таблице, поэтому я хочу скопировать год разделов из существующей таблицы в новую таблицу. Вместо того, чтобы делать Hive INSERT
для каждого раздела, я подумал, что было бы быстрее использовать distcp
для копирования файлов в каталоги разделов новой таблицы в каталоге хранилища Hive в HDFS, затем ADD PARTITION
в новую таблицу.
Итак, это все, что я делаю:
hadoop distcp /apps/hive/warehouse/src_db.db/src_tbl/year=2017/month=02/day=06 /apps/hive/warehouse/dest_db.db/dest_tbl/year=2017/month=02/day=06/ingestion_key=123
hive -e "ALTER TABLE dest_tbl ADD PARTITION (year=2017,month=02,day=06,ingestion_key='123')"
Оба управляемые столы, новая таблица dest_tbl
сгруппирована по той же колонке в такое же количество ведер как src_tbl
, и единственное различие в схеме добавляется INGESTION_KEY
.
Пока что мой SELECT * FROM dest_tbl
показывает все в новом столе, выглядящим нормально. Поэтому мой вопрос: что-то не так с этим подходом? Неужели это плохо для INSERT
для управляемой таблицы в виде таблицы, или это приемлемая альтернатива INSERT
, если никакие преобразования не выполняются на скопированных данных?
Спасибо!
Вы не должны думать в терминах 'INSERT', а скорее в отношении операций резервного копирования/восстановления. Метастор Hive не отслеживает файлы данных, а только структуру каталогов; так как файловая структура соответствует метаданным, это справедливо. –
BTW это также удобный способ отбора данных о производстве и отправки их в тестовый или кластер QA ... –