hive sql優化整理

2021-07-26 18:03:34 字數 1281 閱讀 4511

hive sql優化方法引數一些整理,方便快速查詢使用

1. map數量與reduce數量的控制

輸入檔案大小指實際檔案大小,與檔案格式textfile, orc等無關,壓縮的檔案格式會小很多設定引數要適當調整

--map數量控制

set hive.input.format=org.apache.hadoop.hive.ql.io.combinehiveinputformat;

set mapred.max.split.size=5000000; -- 每個map處理最大檔案大小

set mapred.min.split.size.per.node=5000000; -- 每個節點處理最小檔案大小

set mapred.min.split.size.per.rack=5000000; -- 每個機架處理最小檔案大小

--reduce數量控制

set hive.exec.reducers.bytes.per.reducer=1073741824; -- 預設1g

set hive.exec.reducers.max=16; -- 設定最大的reduce數目

set mapred.reduce.tasks=6; -- 設定reduce數為6

2.  資料發生傾斜

a. 增加reduce的個數,減少reduce資料量

b. join時裁剪過濾無效的key值:不參與join的key值, 為null值、空值等無效的值

c. 轉換key->new_key,資料對new_key的分割槽更加均勻

d. 對資料分布量很大的有限個key 進行單獨處理

e. 若出現小表情況,可以考慮使用mapjoin

3. mapjoin,快取小表資料在map端

set hive.auto.convert.join=false;

set hive.ignore.mapjoin.hint=false;

set hive.optimize.bucketmapjoin.sortedmerge=false;

select /*+ mapjoin(b)*/

a.key,

a.first_name,

b.last_name

from more_record_table a

join less_record_table b

on a.key = b.key;

HiveSql整理 , 習題

unix timestamp 返回當前或指定時間的時間戳 from unixtime 將時間戳轉為日期格式 current date 當前日期 current timestamp 當前的日期加時間 to date 抽取日期部分 year 獲取年 month 獲取月 day 獲取日 hour 獲取時 ...

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表的時候有乙個大表...