1. 程式人生 > >hive動態分割槽

hive動態分割槽

hive靜態分割槽需要制定分割槽欄位的值插入分割槽資料,動態分割槽可以根據分割槽欄位的值自動插入對應分割槽。使用Hive的動態分割槽,需要進行相應的配置。

-- 設定成true,可以選擇GZip壓縮方式
set hive.exec.compress.output=true;
-- GZip壓縮方式具有很好的壓縮效果,減少I/O,GZip壓縮格式檔案是不允許被分割的
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
-- 是否開啟動態分割槽功能,預設false關閉。使用動態分割槽時候,該引數必須設定成true
set hive.exec.dynamic.partition=true; -- 動態分割槽的模式,預設strict,表示必須指定至少一個分割槽為靜態分割槽,nonstrict模式表示允許所有的分割槽欄位都可以使用動態分割槽。 set hive.exec.dynamic.partition.mode=nonstrict; -- 在所有執行MR的節點上,最大一共可以建立多少個動態分割槽 SET hive.exec.max.dynamic.partitions=100000; -- 在每個執行MR的節點上,最大可以建立多少個動態分割槽 SET hive.exec.max.dynamic.partitions.pernode=100000
;
INSERT overwrite TABLE stg_tmp.${hiveconf:TABLE_NAME} PARTITION (DAY,SOURCE) SELECT * FROM stg.${hiveconf:TABLE_NAME} WHERE DAY=${hiveconf:CURRENT_DATE} AND SOURCE=200 DISTRIBUTE BY rand(); -- DISTRIBUTE BY rand() 保證reduce中的資料隨機分配,大小大致相同、防止小檔案過多和資料傾斜