Hive Job層面的優化

2021-09-01 12:42:40 字數 1365 閱讀 2257

1.  run in local mode

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

不需要分布式。

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

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角度

一些關於API層面的優化的VR渲染優化方法

vr渲染需要左右眼兩幅不同的畫面,現在的大部分引擎都是暴力的直接渲染兩遍,這樣做想想效能也很難達到75fps 或90fps 以oculus dk2為例,1920x1080 75fps,加上super sampling就變成了 ue4預設135 2592x1458 75fps 如果是oculus的消費...

Redis業務層面和運維層面優化

我們在了解了導致redis變慢的原因之後,針對性地優化,就可以讓redis穩定發揮出更高效能。由於我之前寫過很多ugc後端服務,在大量場景下用到了redis,這個過程中也踩過很多坑,所以在使用過程中也總結了一套合理的使用方法。後來做基礎架構,開發codis redis相關的中介軟體,在這個階段關注領...

資料庫層面的鎖

那是一種行級鎖,一旦使用者對某個行施加了行級加鎖,則該使用者可以查詢也可以更新被加鎖的資料行,其它使用者只能查詢但不能更新被加鎖的資料行 如果其它使用者想更新該表中的資料行,則也必須對該錶施加行級鎖 即使多個使用者對乙個表均使用了共享更新,但也不允許兩個事務同時對乙個表進行更新,真正對錶進行更新時,...