標籤: hive
2014-08-19 16:26
1892人閱讀收藏
舉報
如果分割槽是可以確定的話,千萬不要用動態分割槽,動態分割槽的值是在reduce執行階段確定的.也就是會把所有的記錄distribute by。 可想而知表記錄非常大的話,只有乙個reduce 去處理,那簡直是瘋狂的。如果這個值唯一或者事先已經知道,比如按天分割槽(i_date=20140819) 那就用靜態分割槽吧。靜態分割槽在編譯階段已經確定,不需要reduce處理。 例如以下兩個insert 表分割槽:
1.插入動態分割槽:
set hive.exec.dynamic.partition.mode=strict;
insert overwrite table a_test partition (i_date)
select id, page, extract, label_count,weight,'20140817'
from b.test_b where request_date_i = '20140817';
2. 插入靜態分割槽:
insert overwrite table a_test partition (i_date='20140817')
select id, page, extract, label_count,weight
from b.test_b where request_date_i = '20140817';
當然選靜態分割槽insert:如果schedule的話,可以動態把i_date傳進去:比如:
insert overwrite table a_test partition (i_date='$')
select id, page, extract, label_count,weight
from b.test_b where request_date_i = '20140817';
關於為什麼這樣,請理解hive執行原理,參考:
HIVE分割槽,靜態分割槽,動態分割槽
分割槽可以大大提公升hive的效能,這裡就要提到數倉的分層 原始資料層,儲存原始收集的資料 數倉明細層,裡面做的是轉換和分析,裡面包含部分的資料清洗的過程 數倉服務層,對外業務的處理,如維度轉 鍵 身份證清洗 會員註冊 清晰 字段合併 空值處理 髒資料處理 ip清晰轉換等 最終業務層 適合做增量表,...
Hive 動態分割槽 靜態分割槽
本文 參考 hive預設是靜態分割槽。但是有時候可能需要動態建立不同的分割槽來區分不同的分類。hive中建立分割槽表沒有什麼複雜的分割槽型別 範圍分割槽 列表分割槽 hash分割槽 混合分割槽等 分割槽列也不是表中的乙個實際的字段,而是乙個或者多個偽列。意思是說在表的資料檔案中實際上並不儲存分割槽列...
HIVE動態分割槽
一 前段時間因為導表需求 從一張表中查詢出資料,按日期分割槽overwrite 到指定分割槽表中 在hive裡面研究了一下自動分割槽。步驟 1 建好所需分割槽表 2 設定分割槽引數?1 2 3 4 sethive.exec.dynamic.partition true 可通過這個語句檢視 sethi...