HiveSql效能優化

2021-10-06 19:00:58 字數 1307 閱讀 1754

一、解決資料傾斜

1. 過濾掉null部分

key值存在大量空欄位,會hash到同一reduce,造成reduce長尾,將null 值過濾掉

舉例: select user_id from logs where statdate = '20170815' where user_id is not null;

2. hive join傾斜:設定join skew引數解決

set hive.optimize.skewjoin = true;

set hive.skewjoin.key = skew_key_threshold (default = 100000);

3. hive group by distinct傾斜:設定skew引數

set hive.groupby.skewindata=true;

二、合理設定map和reduce的個數

1. 合理設定reduce的個數

set mapred.reduce.tasks = 15;

2. jvm重用

set mapred.job.reuse.jvm.num.tasks = 10; (重用次數)

節約jvm 啟動的時間

3. job間並行執行

set hive.exec.parallel=true; 預設並行度為 8,可以通過 hive.exec.parallel.thread.number引數調整

在有些情況下job之間是可以並行的,典型的就是子查詢。

當需要執行多個子查詢union all或者join操作的時候,job間並行就可以使用了。

例:如下可以並行的場景

select * from   

( select count(*) from logs

where log_date = 20170801 and item_id = 1

union all

select count(*) from logs

where log_date = 20170802 and item_id = 2

union all

select count(*) from logs

where log_date = 20170803 and item_id = 3

)t;

hive sql優化整理

hive sql優化方法引數一些整理,方便快速查詢使用 1.map數量與reduce數量的控制 輸入檔案大小指實際檔案大小,與檔案格式textfile,orc等無關,壓縮的檔案格式會小很多設定引數要適當調整 map數量控制 set hive.input.format org.apache.hadoo...

hivesql 效率優化

1.group by 資料傾斜問題 hive是根據group by 的key進行資料分發的,某個key相同的資料太多的會被分發到乙個reducer上,key的資料分布不均勻會導致大量資料被shuffle到某個或者某些reducer上,出現嚴重的資料傾斜,使得資料計算變慢 配置任務引數 set hiv...

HIVESQL優化方法

這是我2年前總結的東西,當時是用華為paas平台的大資料集群的時候,因為我們公司分配的資源較少,自己總結的部分優化方法,如有不足,望大家指正 1 set hive.map.aggr true false 當使用聚合函式時會在ma階段進行聚合 效率更高同時消耗更多資源 2 當join表的時候有乙個大表...