傾斜原因:
map 輸出資料按key hash的分配到reduce中,由於key分布不均勻、業務資料本身的特性等原因造成reduce 上的資料量差異太大
解決方案:
hive.map
.aggr = true
hive.groupby
.skewindata=true
有資料傾斜的時候進行==負載均衡==,當選項設定為true,生成的查詢計畫會有兩個mr job:第乙個mr job 中,map的輸出結果集合會==隨機分布==到reduce中,每個reduce 做部分聚合操作,並輸出結果,這樣處理的結果是相同的group by key有可能被分發到不同的reduce中,從而達到負載均衡的目的;第二個mr job再根據預處理的資料結果按照group by key分布到reduce中(這個過程可以保證相同的group by key被分布到同乙個reduce中),最後完成最終的聚合操作
hive是基於hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句快速實現簡單的mapreduce統計,不必開發專門的mapreduce的應用
from a
insert overwrite table b
select a.a, count(distinct a.b) group
by a.a
insert overwrite table c
select a.c, count(distinct a.b) group
by a.c
order by:會對輸入做全域性排序,因此只有乙個reducer,只有乙個reducer會導致當輸入規模較大時,需要較長的計算時間
sort by:不是全域性排序,其在資料進入到reducer前完成排序
distribute by:按照指定的字段對資料進行劃分輸出到不同的reduce中
cluster by: 除了具有distribute by的功能還兼具sort by的功能
參考
Hive總結(五)hive日誌
日誌記錄了程式執行的過程,是一種查詢問題的利器。hive中的日誌分為兩種 1.系統日誌,記錄了hive的運 況,錯誤狀況。2.job 日誌,記錄了hive 中job的執行的歷史過程。系統日誌儲存在什麼地方呢 在hive conf hive log4j.properties 檔案中記錄了hive日誌的...
Hive總結(五)hive日誌
日誌記錄了程式執行的過程,是一種查詢問題的利器。hive中的日誌分為兩種 1.系統日誌,記錄了hive的運 況,錯誤狀況。2.job 日誌,記錄了hive 中job的執行的歷史過程。系統日誌儲存在什麼地方呢 在hive conf hive log4j.properties 檔案中記錄了hive日誌的...
Hive 優化總結
1.left semi join let semi join 只是hive的一種join。left semi join是可以高效實現in exists子查詢的語義。hive本身是不支援exist和in語句的,以下sql語義 1 select a.key,a.value from a where a....