成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Hive架構(gòu)、傾斜優(yōu)化、sql及常見問題

Hive架構(gòu)

Hive架構(gòu)、傾斜優(yōu)化、sql及常見問題
hive架構(gòu)如圖所示,client跟driver交互,通過parser、planner、optimizer,最后轉(zhuǎn)為mapreduce運(yùn)行,具體步驟如下
Hive架構(gòu)、傾斜優(yōu)化、sql及常見問題

創(chuàng)新互聯(lián)公司專注于越秀企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),購(gòu)物商城網(wǎng)站建設(shè)。越秀網(wǎng)站建設(shè)公司,為越秀等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

  1. driver輸入一條sql,會(huì)由parser轉(zhuǎn)為抽象語(yǔ)法樹AST,這個(gè)是沒有任務(wù)元數(shù)據(jù)信息的語(yǔ)法樹;
  2. 語(yǔ)法分析器再把AST轉(zhuǎn)為一個(gè)一個(gè)的QueryBlock,一個(gè)QueryBlock包含輸入、輸出、計(jì)算邏輯,也就是說一個(gè)子程序就是QueryBlock
  3. planner遍歷所有的QueryBlock,轉(zhuǎn)為一個(gè)個(gè)的Operator(算子,比如tablescanOperator),最后形成OperatorTree;
  4. 優(yōu)化器對(duì)OperatorTree進(jìn)行優(yōu)化,包含謂詞下推、剪枝等;
  5. 然后遍歷OperatorTree,分割成多個(gè)mapreduce作業(yè),形成物理計(jì)劃
  6. 之后進(jìn)行物理優(yōu)化,比如是否進(jìn)行map join等

Hive 數(shù)據(jù)傾斜優(yōu)化

  1. 對(duì)于group by可以有兩個(gè)優(yōu)化點(diǎn)
    map聚合:set hive.map.aggr=true,會(huì)在map端對(duì)相同key先聚合一下;
    分發(fā)為兩道作業(yè):set hive.groupby.skewindata=true,會(huì)對(duì)原來的一道作業(yè)分為兩道作業(yè),第一道隨機(jī)分配key,第二道再按key分配
    注意:對(duì)于部分聚合函數(shù)有用,比如sum和count,但是完全聚合函數(shù)無用,比如avg
  2. 對(duì)于join也有兩個(gè)優(yōu)化點(diǎn)
    map join:新版hive中默認(rèn)開啟set hive.auto.convert.join=true ,join的左表如果足夠小,會(huì)直接把左表內(nèi)容加載到內(nèi)存中
    兩道作業(yè):set hive.optimize.skewjoin = true;set hive.skewjoin.key = skew_key_threshold (default = 100000)這個(gè)兩道作業(yè)跟groupby不一樣,這個(gè)是說把超過10萬行的數(shù)據(jù)單獨(dú)啟一道m(xù)ap join,最后再把結(jié)果聚合

hive常見問題

  1. hive不支持非等值join
    錯(cuò)誤:select from a inner join b on a.id<>b.id
    替代方法:select
    from a inner join b on a.id=b.id and a.id is null;
  2. hive不支持非join連接
    錯(cuò)誤:select from dual a,dual b where a.key = b.key;
    正確:select
    from dual a join dual b on a.key = b.key;
  3. hive不支持or
    錯(cuò)誤:select from a inner join b on a.id=b.id or a.name=b.name
    替代方法:select
    from a inner join b on a.id=b.id union all select * from a inner join b on a.name=b.name
  4. hive內(nèi)部表和外部表的區(qū)別
    創(chuàng)建表時(shí):創(chuàng)建內(nèi)部表時(shí),會(huì)將數(shù)據(jù)移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)指向的路徑;若創(chuàng)建外部表,僅記錄數(shù)據(jù)所在的路徑, 不對(duì)數(shù)據(jù)的位置做任何改變。
    刪除表時(shí):在刪除表的時(shí)候,內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)會(huì)被一起刪除, 而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)。這樣外部表相對(duì)來說更加安全些,數(shù)據(jù)組織也更加靈活,方便共享源數(shù)據(jù)
  5. sortby、orderby、distributeby
    order by會(huì)引發(fā)全局排序;會(huì)導(dǎo)致所有的數(shù)據(jù)集中在一臺(tái)reducer節(jié)點(diǎn)上,然后進(jìn)行排序,這樣很可能會(huì)超過單個(gè)節(jié)點(diǎn)的磁盤和內(nèi)存存儲(chǔ)能力導(dǎo)致任務(wù)失敗。
    distribute by + sort by就是該替代方案,被distribute by設(shè)定的字段為KEY,數(shù)據(jù)會(huì)被HASH分發(fā)到不同的reducer機(jī)器上,然后sort by會(huì)對(duì)同一個(gè)reducer機(jī)器上的每組數(shù)據(jù)進(jìn)行局部排序。

分享文章:Hive架構(gòu)、傾斜優(yōu)化、sql及常見問題
本文網(wǎng)址:http://jinyejixie.com/article12/pppegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃云服務(wù)器、網(wǎng)站設(shè)計(jì)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷、品牌網(wǎng)站設(shè)計(jì)

廣告

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

成都網(wǎng)站建設(shè)
兴业县| 铁力市| 梅州市| 任丘市| 怀宁县| 南汇区| 佛学| 石屏县| 定安县| 寻乌县| 绥滨县| 吴堡县| 长兴县| 庄浪县| 曲阜市| 河北省| 崇义县| 炎陵县| 晴隆县| 宝鸡市| 清水县| 丘北县| 盘山县| 二连浩特市| 大宁县| 嘉定区| 含山县| 濉溪县| 望江县| 扶余县| 天镇县| 金秀| 汉沽区| 武强县| 彰武县| 昌吉市| 临桂县| 舞钢市| 曲阳县| 津市市| 呼图壁县|