Изменение разделов таблицы 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 для распознавания разделов.

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