2017-02-09 8 views
0

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