日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive 调优(一)coding调优

發(fā)布時間:2025/4/9 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive 调优(一)coding调优 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本人認為hive是很好的工具,目前支持mr,tez,spark執(zhí)行引擎,有些大公司原來封裝的sparksql,開發(fā)py腳本,但是目前hive支持spark引擎(不是很穩(wěn)定,建議Tez先),所以離線還是用hive比較好。

先將工作中總結(jié),以及學(xué)習(xí)其他人的hive優(yōu)化總結(jié)如下:

一. 表連接優(yōu)化 這是比較常見的問題

1. ?將大表放后頭

Hive假定查詢中最后的一個表是大表。它會將其它表緩存起來,然后掃描最后那個表。

因此通常需要將小表放前面,或者標(biāo)記哪張表是大表:/*streamtable(table_name) */

2. 使用相同的連接鍵

當(dāng)對3個或者更多個表進行join連接時,如果每個on子句都使用相同的連接鍵的話,那么只會產(chǎn)生一個MapReduce job。

3. 盡量盡早地過濾數(shù)據(jù)

減少每個階段的數(shù)據(jù)量,對于分區(qū)表要加分區(qū),同時只選擇需要使用到的字段。

4.?盡量原子化操作

盡量避免一個SQL包含復(fù)雜邏輯,可以使用中間表來完成復(fù)雜的邏輯

?

二. 用insert into替換union all,數(shù)據(jù)量大的時候很明顯

如果union all的部分個數(shù)大于2,或者每個union部分數(shù)據(jù)量大,應(yīng)該拆成多個insert into 語句,實際測試過程中,執(zhí)行時間能提升50%

?

如:

insert overwite table tablename partition (dt= ....)  

select ..... from ( select ... from A?

union all  

select ... from B  union all select ... from C ) R  

where ...;

可以改寫為:

insert into table tablename partition (dt= ....) select .... from A WHERE ...; insert into table tablename partition (dt= ....) select .... from B  WHERE ...; insert into table tablename partition (dt= ....) select .... from C WHERE ...;

?

三. ?order by & sort by?

?

order by : 對查詢結(jié)果進行全局排序,消耗時間長。需要 set hive.mapred.mode=nostrict

sort by : 局部排序,并非全局有序,提高效率。

?

四. transform+python

一種嵌入在hive取數(shù)流程中的自定義函數(shù),通過transform語句可以把在hive中不方便實現(xiàn)的功能在python中實現(xiàn),然后寫入hive表中。

語法:

select transform({column names1})

using '**.py'

as?{column names2}

from {table name}

如果除python腳本外還有其它依賴資源,可以使用ADD ARVHIVE

用hive自定義函數(shù)很方便

?

五. limit 語句快速出結(jié)果

一般情況下,Limit語句還是需要執(zhí)行整個查詢語句,然后再返回部分結(jié)果。

有一個配置屬性可以開啟,避免這種情況---對數(shù)據(jù)源進行抽樣

hive.limit.optimize.enable=true --- 開啟對數(shù)據(jù)源進行采樣的功能

hive.limit.row.max.size --- 設(shè)置最小的采樣容量

hive.limit.optimize.limit.file --- 設(shè)置最大的采樣樣本數(shù)

缺點:有可能部分數(shù)據(jù)永遠不會被處理到

?

六. 本地模式

對于小數(shù)據(jù)集,為查詢觸發(fā)執(zhí)行任務(wù)消耗的時間>實際執(zhí)行job的時間,因此可以通過本地模式,在單臺機器上(或某些時候在單個進程上)處理所有的任務(wù)。

set oldjobtracker=${hiveconf:mapred.job.tracker};?

set mapred.job.tracker=local;  

set marped.tmp.dir=/home/edward/tmp; sql 語句  set mapred.job.tracker=${oldjobtracker};

-- 可以通過設(shè)置屬性hive.exec.mode.local.auto的值為true,來讓hve在適當(dāng)?shù)臅r候自動啟動這個優(yōu)化,也可以將這個配置寫在$HOME/.hiverc文件中。

-- 當(dāng)一個job滿足如下條件才能真正使用本地模式:

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)

3.job的reduce數(shù)必須為0或者1

可用參數(shù)hive.mapred.local.mem(默認0)控制child jvm使用的最大內(nèi)存數(shù)。

?

七. 并行執(zhí)行

hive會將一個查詢轉(zhuǎn)化為一個或多個階段,包括:MapReduce階段、抽樣階段、合并階段、limit階段等。默認情況下,一次只執(zhí)行一個階段。 不過,如果某些階段不是互相依賴,是可以并行執(zhí)行的。

set hive.exec.parallel=true,可以開啟并發(fā)執(zhí)行。

set hive.exec.parallel.thread.number=16; //同一個sql允許最大并行度,默認為8。

會比較耗系統(tǒng)資源。

?

八. 調(diào)整mapper和reducer的個數(shù)

1 Map階段優(yōu)化

map個數(shù)的主要的決定因素有: input的文件總個數(shù),input的文件大小,集群設(shè)置的文件塊大小(默認128M,不可自定義)。

舉例:

a) 假設(shè)input目錄下有1個文件a,大小為780M,那么hadoop會將該文件a分隔成7個塊(6個128m的塊和1個12m的塊),從而產(chǎn)生7個map數(shù)

b) 假設(shè)input目錄下有3個文件a,b,c,大小分別為10m,20m,130m,那么hadoop會分隔成4個塊(10m,20m,128m,2m),從而產(chǎn)生4個map數(shù)

即,如果文件大于塊大小(128m),那么會拆分,如果小于塊大小,則把該文件當(dāng)成一個塊。

map執(zhí)行時間:map任務(wù)啟動和初始化的時間+邏輯處理的時間。

1)減少map數(shù)

若有大量小文件(小于128M),會產(chǎn)生多個map,處理方法是:

set mapred.max.split.size=100000000; set mapred.min.split.size.per.node=100000000; set mapred.min.split.size.per.rack=100000000; ?

-- 前面三個參數(shù)確定合并文件塊的大小,大于文件塊大小128m的,按照128m來分隔,小于128m,大于100m的,按照100m來分隔,把那些小于100m的(包括小文件和分隔大文件剩下的)進行合并

 set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; -- 執(zhí)行前進行小文件合并 2)增加map數(shù)

當(dāng)input的文件都很大,任務(wù)邏輯復(fù)雜,map執(zhí)行非常慢的時候,可以考慮增加Map數(shù),來使得每個map處理的數(shù)據(jù)量減少,從而提高任務(wù)的執(zhí)行效率。

set mapred.reduce.tasks=?

2 Reduce階段優(yōu)化

調(diào)整方式:

-- set mapred.reduce.tasks=?

-- set hive.exec.reducers.bytes.per.reducer = ?

一般根據(jù)輸入文件的總大小,用它的estimation函數(shù)來自動計算reduce的個數(shù):reduce個數(shù) = InputFileSize / bytes per reducer

九.嚴格模式

set hive.marped.mode=strict ------ 防止用戶執(zhí)行那些可能意想不到的不好的影響的查詢

-- 分區(qū)表,必須選定分區(qū)范圍

-- 對于使用order by的查詢,要求必須使用limit語句。因為order by為了執(zhí)行排序過程會將所有的結(jié)果數(shù)據(jù)分發(fā)到同一個reducer中進行處理。

-- 限制笛卡爾積查詢:兩張表join時必須有on語句

?

十.數(shù)據(jù)傾斜

表現(xiàn):任務(wù)進度長時間維持在99%(或100%),查看任務(wù)監(jiān)控頁面,發(fā)現(xiàn)只有少量(1個或幾個)reduce子任務(wù)未完成。因為其處理的數(shù)據(jù)量和其他reduce差異過大。

單一reduce的記錄數(shù)與平均記錄數(shù)差異過大,通常可能達到3倍甚至更多。 最長時長遠大于平均時長。

原因

1)、key分布不均勻

2)、業(yè)務(wù)數(shù)據(jù)本身的特性

3)、建表時考慮不周

4)、某些SQL語句本身就有數(shù)據(jù)傾斜

關(guān)鍵詞情形后果
join其中一個表較小,但是key集中分發(fā)到某一個或幾個Reduce上的數(shù)據(jù)遠高于平均值
join大表與大表,但是分桶的判斷字段0值或空值過多這些空值都由一個reduce處理,灰常慢
group bygroup by 維度過小,某值的數(shù)量過多處理某值的reduce灰常耗時
count distinct某特殊值過多處理此特殊值reduce耗時

解決方案:

參數(shù)調(diào)節(jié)

hive.map.aggr=true

轉(zhuǎn)載于:https://www.cnblogs.com/mobiwangyue/p/8484916.html

總結(jié)

以上是生活随笔為你收集整理的hive 调优(一)coding调优的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线看v片| 自拍天堂| 亚洲av综合色区无码一二三区 | 最新av免费在线观看 | 一区二区视频免费在线观看 | 日韩黄色精品视频 | 青青青草国产 | 中文字幕av久久爽一区 | 明星双性精跪趴灌满h | ,午夜性刺激免费看视频 | 中文字幕永久免费 | 亚洲精品国产精品乱码桃花 | 精品国产污污免费网站入口 | 东京热加勒比无码少妇 | 夜夜嗨av一区二区三区四区 | 祥仔视觉av | 玖玖爱这里只有精品 | 亚洲最黄网站 | 国产精品人人做人人爽 | 精品人妻无码中文字幕18禁 | 日韩mv欧美mv国产网站 | av成人在线电影 | 久草视频在线观 | 日日夜夜拍 | www中文字幕 | 日韩一区二区三区四区五区六区 | 国产精品一区二区三区四 | 日韩欧美福利 | 久久精品国产亚洲AV无码男同 | 国产主播av在线 | 欧美日韩免费观看一区=区三区 | 9999精品 | 68日本xxxxxⅹxxx59 | 免费无码肉片在线观看 | 69天堂| 日日干夜夜撸 | 欧美特黄aaaaaa | 国产第八页 | www.久久av.com | 国产激情久久久久 | 国产黄色一区 | 性渴老太作爱 | 超碰人操| 久久伊人亚洲 | 日韩av高清无码 | 欧美日本国产 | 黄色片久久久 | 波多野结衣a v在线 欧洲免费av | 中文字幕va | 色网站在线看 | 禁漫天堂黄漫画无遮挡观看 | 欧美性猛交xxxx乱 | 午夜精品久久久久久久99 | 东北女人av | 国产成人三级在线观看 | 人妖粗暴刺激videos呻吟 | 国产精品主播在线 | 日韩色道 | 久久久精品一区二区 | 成人午夜小视频 | 欧美亚洲视频在线观看 | 高清免费视频日本 | 亚洲成人免费网站 | 男生和女生一起差差差很痛的视频 | 亚洲最大成人在线视频 | 亚洲a图| 国产精品亚洲综合 | 成人免费视频观看 | 51吃瓜网今日吃瓜 | 91超碰免费 | 少妇裸体挤奶汁奶水视频 | 男女在楼梯上高潮做啪啪 | 久久久久综合 | 五月婷婷一区二区三区 | 欧美极品少妇xxxxⅹ免费视频 | 丁香激情综合 | 日本老熟妇毛茸茸 | 手机看片欧美日韩 | 先锋影音一区二区 | 国产精品1 | 国产一级免费观看 | 久久久久久不卡 | 超碰在线免费看 | 麻豆国产尤物av尤物在线观看 | 原创av| 国产精品久久久久久久久久久新郎 | 欧美久久久久久久久中文字幕 | 国产三级大片 | 91av影院| 夜夜噜噜噜 | 国产精品一卡二卡在线观看 | 爱情岛论坛自拍亚洲品质极速最新章 | 噼里啪啦动漫高清在线观看 | 成人啪啪网站 | 黄色h视频| 国产视频一二区 | 亚洲天堂热 | 欧美性猛交久久久乱大交小说 | 午夜激情欧美 |