本地模式
嚴格模式
jvm重用
並行執行
推測還行
合併小檔案
fetch模式
1.列裁剪和分割槽裁剪
列裁剪是在查詢時只讀取需要的列;分割槽裁剪就是只讀取需要的分割槽。
2.sort by代替 order by
3.group by
代替count(distinct)
1、common join
普通連線,在sql
中不特殊指定連線方式使用的都是這種普通連線。
缺點:效能較差(
要將資料分割槽,有
shuffle)
2.map join
map端連線,與普通連線的區別是這個連線中不會有
reduce
階段存在,連線在
map端完成
適用場景:大表與小表連線,小表資料量應該能夠完全載入到記憶體,否則不適用
3、bucket map join
分桶連線:hive
建表的時候支援
hash
分割槽通過指定
clustered by (col_name,*** ) into number_buckets buckets 關鍵字
.當連線的兩個表的
join key
就是bucket column 的時候,就可以通過設定
hive.optimize.bucketmapjoin= true
來執行優 化。
原理:通過兩個表分桶在執行連線時會將小表的每個分桶對映成hash
表,每個
task節點都需要這個小表的所有hash
表,但是在執行時只需要載入該
task
所持有大表分桶對應的小表部分的hash
表就可以,所以對記憶體的要求是能夠載入小表中最大的hash塊即可。
注意點:小表與大表的分桶數量需要是倍數關係,這個是因為分桶策略決定的,分桶時會根據分桶字段對桶數取餘後決定哪個桶的,所以要保證成倍數關係。
優點:比map join
對記憶體的要求降低,能在逐行對比時減少資料計算量(不用比對小表全量)
缺點:只適用於分桶表
1.好的模型設計,事半功倍
2.解決資料傾斜問題。僅僅依靠引數解決資料傾斜,是通用的優化手段,收穫有限。開發人員應該熟悉業務,了解資料規律,通過業務邏輯解決資料傾斜往往 更可靠
3.減少
job 數
4,.設定合理的
map、
reduce task數
5.對小檔案進行合併,是行之有效的提高
hive
效率的方法
6.優化把握整體,單一作業的優化不如整體最優
Hive 隨談(五) Hive 優化
hive 針對不同的查詢進行了優化,優化可以通過配置進行控制,本文將介紹部分優化的策略以及優化控制選項。列裁剪 column pruning 在讀資料的時候,只讀取查詢中需要用到的列,而忽略其他列。例如,對於查詢 select a,b from t where e 10 其中,t 包含 5 個列 a...
Hive學習筆記五
目錄 二 資料匯出 三 清除表中資料 truncate 1 向表中裝載資料 load hive load data local inpath opt module datas student.txt overwrite into table student partition partcol1 va...
Hive 優化 筆記5
hive 針對不同的查詢進行了優化,優化可以通過配置進行控制,本文將介紹部分優化的策略以及優化控制選項。列裁剪 column pruning 在讀資料的時候,只讀取查詢中需要用到的列,而忽略其他列。例如,對於查詢 select a,b from t where e 10 其中,t 包含 5 個列 a...