Изменение разделов таблицы Hive путем уменьшения количества разделов
Создать заявление:
CREATE EXTERNAL TABLE tab1(usr string)
PARTITIONED BY (year string, month string, day string, hour string, min string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
LOCATION '/tmp/hive1';
Данные:
select * from tab1;
jhon,2017,2,20,10,11
jhon,2017,2,20,10,12
jhon,2017,2,20,10,13
Теперь мне нужно переделать tab1
таблица должна иметь только 3 раздела (year string, month string, day string)
без копирования / изменения файлов вручную. У меня есть тысячи файлов, поэтому я должен изменить только определение таблицы, не касаясь файлов?
Пожалуйста, дайте мне знать, как это сделать?
1 ответ
Если вы это сделаете один раз, я бы предложил создать новую таблицу с ожидаемыми разделами и вставить таблицу из более старой таблицы в новую, используя динамическое разбиение. Это также позволит избежать хранения небольших файлов в ваших разделах. Другой вариант - создать новую таблицу, указывающую на старое местоположение с ожидаемыми разделами, и использовать следующие свойства
TBLPROPERTIES ("hive.input.dir.recursive" = "TRUE",
"hive.mapred.supports.subdirectories" = "TRUE",
"hive.supports.subdirectories" = "TRUE",
"mapred.input.dir.recursive" = "TRUE");
после этого вы можете запустить таблицу восстановления msck для распознавания разделов.