bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Hive調(diào)優(yōu)總結(jié)

一、查看執(zhí)行計劃
explain extended hql;可以看到掃描數(shù)據(jù)的hdfs路徑

二、hive表優(yōu)化

分區(qū)(不同文件夾):
動態(tài)分區(qū)開啟:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

在北流等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計制作、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需網(wǎng)站設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站制作,北流網(wǎng)站建設(shè)費用合理。

    默認值:strict
   描述:strict是避免全分區(qū)字段是動態(tài)的,必須有至少一個分區(qū)字段是指定有值的

   避免產(chǎn)生大量分區(qū)

分桶(不同文件):
set hive.enforce.bucketing=true;
set hive.enforce.sorting=true;開啟強制排序,插數(shù)據(jù)到表中會進行強制排序,默認false;


三、Hive SQL優(yōu)化

groupby數(shù)據(jù)傾斜優(yōu)化
hive.groupby.skewindata=true;(多起一個job)1.join優(yōu)化

(1)數(shù)據(jù)傾斜
hive.optimize.skewjoin=true;
如果是join過程出現(xiàn)傾斜,應(yīng)該設(shè)置為true
set hive.skewjoin.key=100000;
這個是join的鍵對應(yīng)的記錄條數(shù)超過這個值則會進行優(yōu)化
簡單說就是一個job變?yōu)閮蓚€job執(zhí)行HQL

(2)mapjoin(map端執(zhí)行join)
啟動方式一:(自動判斷)
set.hive.auto.convert.join=true;
hive.mapjoin.smalltable.filesize 默認值是25mb
小表小于25mb自動啟動mapjoin 
啟動方式二:(手動)
select /*+mapjoin(A)*/ f.a,f.b from A t join B f on (f.a=t.a)

mapjoin支持不等值條件
reducejoin不支持在ON條件中不等值判斷

(3)bucketjoin(數(shù)據(jù)訪問可以精確到桶級別)
使用條件:1.兩個表以相同方式劃分桶
         2.兩個表的桶個數(shù)是倍數(shù)關(guān)系
例子:
create table order(cid int,price float) clustered by(cid)   into 32 buckets;
create table customer(id int,first string) clustered by(id)   into 32/64 buckets;

select price from order t join customer s on t.cid=s.id;

(4)where條件優(yōu)化
優(yōu)化前(關(guān)系數(shù)據(jù)庫不用考慮會自動優(yōu)化):
select m.cid,u.id from order m join customer u on m.cid =u.id where m.dt='2013-12-12';

優(yōu)化后(where條件在map端執(zhí)行而不是在reduce端執(zhí)行):
select m.cid,u.id from (select * from order where dt='2013-12-12') m join customer u on m.cid =u.id;

(5)group by 優(yōu)化
hive.groupby.skewindata=true;
如果group by過程出現(xiàn)傾斜應(yīng)該設(shè)置為true
set hive.groupby.mapaggr.checkinterval=100000;
這個是group的鍵對應(yīng)的記錄條數(shù)超過這個值則會進行優(yōu)化

也是一個job變?yōu)閮蓚€job
(6)count distinct優(yōu)化
優(yōu)化前(只有一個reduce,先去重再count負擔(dān)比較大):
select count(distinct id) from tablename;
優(yōu)化后(啟動兩個job,一個job負責(zé)子查詢(可以有多個reduce),另一個job負責(zé)count(1)):
select count(1) from (select distinct id from tablename) tmp;

select count(1) from (select id from tablename group by id) tmp;

set mapred.reduce.tasks=3;

 (7)
優(yōu)化前:
select a,sum(b),count(distinct c),count(distinct d) from test group by a;

優(yōu)化后:
select a,sum(b) as b,count(c) as c,count(d) as d from

select a, 0 as b,c,null as d from test group by a,c
union all
select a,0 as b, null as c,d from test group by a,d
union all
select a, b,null as c ,null as d from test) tmp group by a;


四、Hive job優(yōu)化

1.并行化執(zhí)行
hive默認job是順序進行的,一個HQL拆分成多個job,job之間無依賴關(guān)系也沒有相互影響可以并行執(zhí)行
set hive.exec.parallel=true;

set hive.exec.parallel.thread.number=8;
就是控制對于同一個sql來說同時可以運行的job的最大值,該參數(shù)默認為8.此時最大可以同時運行8個job

2.本地化執(zhí)行(在存放數(shù)據(jù)的節(jié)點上執(zhí)行)

set hive.exec.mode.local.auto=true;

本地化執(zhí)行必須滿足條件:
(1)job的輸入數(shù)據(jù)大小必須小于參數(shù)
hive.exec.mode.local.auto.inputbytes.max(默認128MB)
(2)job的map數(shù)必須小于參數(shù):
hive.exec.mode.local.auto.tasks.max(默認為4)太多沒有足夠的slots
(3)job的reduce數(shù)必須為0或1


3.job合并輸入小文件
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
多個split合成一個,合并split數(shù)由mapred.max.split.size限制的大小決定

4.job合并輸出小文件(為后續(xù)job優(yōu)化做準備)
set hive.merge.smallfiles.avgsize=256000000;當(dāng)輸出文件平均大小小于該值,啟動新job合并文件

set hive.merge.size.per.task=64000000;合并之后的每個文件大小

5.JVM重利用
set mapred.job.reuse.jvm.num.tasks=20;

每個jvm運行多少個task;

JVM重利用可以使job長時間保留slot,直到作業(yè)結(jié)束。
6.壓縮數(shù)據(jù)(多個job)
(1)中間壓縮處理hive查詢的多個job之間的數(shù)據(jù),對于中間壓縮,最好選擇一個節(jié)省cpu耗時的壓縮方式
set hive.exec.compress.intermediate=true;
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set hive.intermediate.compression.type=BLOCK;按塊壓縮,而不是記錄 
(2)最終輸出壓縮(選擇壓縮效果好的,減少儲存空間) 
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set mapred.output.compression.type=BLOCK;按塊壓縮,而不是記錄 

五、Hive Map優(yōu)化

1.set mapred.map.tasks=10 無效
(1)默認map個數(shù)
default_num=total_size/block_size;
 (2)期望大小(手動設(shè)置的個數(shù))
goal_num =mapred.map.tasks;
(3)設(shè)置處理的文件大小(根據(jù)文件分片大小計算的map個數(shù))
split_size=max(block_size,mapred.min.split.size);
split_num=total_size/split_size;
(4)最終計算的map個數(shù)(實際map個數(shù))
compute_map_num=min(split_num,max(default_num,goal_num))

總結(jié):
(1)如果想增加map個數(shù),則設(shè)置mapred.map.tasks為一個較大的值;
(2)如果想減小map個數(shù),則設(shè)置mapred.min.split.size為一個較大的值。
 
2.map端聚合
set hive.map.aggr=true;相當(dāng)于map端執(zhí)行combiner

3.推測執(zhí)行(默認為true)
mapred.map.tasks.speculative.execution


六、Hive Shuffle優(yōu)化
Map 端
io.sort.mb
io.sort.spill.percent
min.num.spill.for.combine
io.sort.factor
io.sort.record.percent

reduce端
mapred.reduce.parallel.copies
mapred.reduce.copy.backoff
io.sort.factor
mapred.job.shuffle.input.buffer.percent


七、HIve Reduce優(yōu)化
1.推測執(zhí)行(默認為true)

mapred.reduce.tasks.speculative.execution(hadoop里面的)
hive.mapred.reduce.tasks.speculative.execution(hive里面相同的參數(shù),效果和hadoop里面的一樣)
兩個隨便哪個都行

2.Reduce優(yōu)化(reduce個數(shù)設(shè)置)
set mapred.reduce.tasks=10;直接設(shè)置

最大值
hive.exec.reducers.max 默認:999

每個reducer計算的文件量大小
hive.exec.reducers.bytes.per.reducer 默認:1G

計算公式:雖然設(shè)了這么多,但不一定用到這么多
numRTasks =min[maxReducers,input.size/perReducer]
maxReducers=hive.exec.reducers.max
perReducer=hive.exec.reducers.bytes.per.reducer

八、隊列
set mapred.queue.name=queue3;設(shè)置隊列queue3
set mapred.job.queue.name=queue3;設(shè)置使用queue3
set mapred.job.priority=HIGH;

隊列參考文章:
http://yaoyinjie.blog.51cto.com/3189782/872294


新聞標(biāo)題:Hive調(diào)優(yōu)總結(jié)
分享鏈接:http://vcdvsql.cn/article32/jhggsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作商城網(wǎng)站移動網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航外貿(mào)網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化