Hive 筆記五 hive的優化

2021-10-08 00:15:37 字數 1539 閱讀 6725

本地模式

嚴格模式

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...