Hive本身是不支持動態分區的..
但動態分區是真的方便啊..不然手動維護要累死..按日期甚至小時來分區時動輒就好幾千上萬的分區..手動到哪一年去..?
想要用動態分區要先做一些設置來修改默認的配置..
set hive.exec.dynamic.partition=true;(可通過這個語句查看:set hive.exec.dynamic.partition;) set hive.exec.dynamic.partition.mode=nonstrict; SET hive.exec.max.dynamic.partitions=100000;(如果自動分區數大於這個參數,將會報錯) SET hive.exec.max.dynamic.partitions.pernode=100000;
可以直接把上述設置項在控制台中運行一下..以后就可以自由動態分區了..
建立分區表的語法.
Drop table table_name; --先刪除表 沒有則直接建表了 CREATE TABLE table_name --創建表 (col1 string, col2 date, col3 double) partitioned by (datekey date) --可以多個字段的組合分區 ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' Stored AS TEXTFILE;
插入數據..
INSERT INTO TABLE table_Name PARTITION (DateKey) SELECT col1,col2,col3,DateKey FROM otherTable WHERE DATEKEY IN ('2017-02-26','2013-06-12','2013-09-24') GROUP BY col1,col2,col3,DateKey DISTRIBUTE BY DateKey
刪除分區:
ALTER TABLE table_Name DROP PARTITION (Datekey='2016-05-05');
以上為整理的部分關於Hive分區的資料..歡迎取閱..
