1. 程式人生 > >Hive Job層面的優化

Hive Job層面的優化

1.  Run in Local Mode

資料處理比較小的時候就執行本地模式,

不需要分散式。

把閥值這三個設定改一下就是本地模式了。

 

2.  JVM Reuse

Hadoop每當得到一個map或者reduce任務的時候,

就會啟動一個新的JVM。

處理job時間比較短,但是啟動JVM太費時了。

配置成JVM Reuse可以大大優化

 

3. Parallel Exectution 並行執行

這個很常用的,預設是關閉的。

hive很多階段是可以並行執行的,

並不是每個階段都互相依賴,

如果叢集中資源利用效率不高,可以考慮開啟此選項。

 

4. 查詢優化

(1)map side join 設定為enable

(2)bucket map side join 也設定為enable

以上兩種都是基於bucket來優化,務必開啟。

(3)skewjoin也可以開啟為true

有資料傾斜時,就重新分配。

(4)CBO(一個很棒的執行優化器)

set hive.cbo.enable=true;  開啟CBO

然後你可能就要收集狀態,所以status也設定為true。(見下圖)

這幾個都要開啟。

基於cost的優化

(5)vectorized

基於向量的優化,和基於cost的優化不衝突

一般這兩個選項也是開啟的,預設是開啟的。

作用是hive做資料掃描的時候會按照1024rows來批量掃描,這樣效能大大提高。

 

其他優化:

CTE:code儘量用CTE,這樣好理解。

Common Table Expression

 

臨時表可以共用,省去很多重複步驟。

 

windows functions比group by好多了,

這樣你可以用簡單的query實現複雜的功能。

 

總結:

瞭解了事務的概念

會使用增刪改查,演示了一個merge的例子

瞭解了HPLSQL

瞭解了效能優化的一些技巧

從設計角度和從job角度