實戰班 Hive高階(二)

2021-10-06 02:31:52 字數 1571 閱讀 4617

一、上次回顧

二、hive sql的執行流程

三、hive中的udf函式

四、本次課程涉及面試題

1、場景:資料量不大,但是使用hive sql執行起來比較慢;

hive中常用的sql語句?

乙個sql的執行流程大概會分為如下幾個流程:

sql on hadoop的乙個引擎,乙個sql語句進來,把作業提交到集群環境中去執行,結果出來,對於使用者來說,這一步就是個黑盒子,不去了解的話根本就不會知道;

無外乎幾個動作,sql語句進來,有乙個sql parse的過程 --> ast(抽象語法樹,是乙個字串)–> analyzer(去到meta info中檢視表字段在不在)–> logical plan(邏輯執行計畫)–> 對應的是一堆operator tree --> 邏輯執行計畫優化 --> 物理執行計畫 --> 物理執行計畫優化 --> 提交一堆task;

重要的兩個過程:邏輯執行計畫優化、物理執行計畫優化

1、predicate push down

2、mapjoin

如上兩步發生在哪兩個過程?

join不僅僅只有sql中的join,還有map join和reduce join,看見乙個join知道底層是怎麼樣的;使用mapreduce的思想去描述出來;

下**析:兩個輸入分片對應兩個map task,map中的邏輯就是先拆分,splits(2)拿到類別字段,第二個字段=大奔,就會收集出來,map就已經結束了,直接輸出了。

inputsplit劃分為幾塊取決於blocksize的大小

group by 的過程

mr的count是怎麼執行的:

1、map: split --> (word,1)

2、shuffle:(word,1)partitioner --> reduce

3、reduce:(word,可迭代的(1,1,1,1,1,)) --> (word, sum(可迭代的1))

1)、map:split --> (city,1),可能還會涉及到combiner過程,combiner:local reducer區域性的聚合

task tree是最終的傳送map task和reduce task去執行的,乙個sql進來是在哪個層面做什麼調優的呢,按照split去讀取資料,經過map按照所需要的城市求次數,經過combine操作,計算每乙個task的結果,經過shuffle把每乙個reduce中的key分到不同的reduce上去,結果累加計算;

udf:一對一,upper substr

udaf:多對一,sum

udtf:一對多,lateral view

面試題:你對hive的認識?

combiner的使用場景

spark中reducebykey和groupbykey的區別

hive日誌分析實戰(二)

統計某遊戲平台新使用者渠道 日誌格式如下 jul 23 0 00 47 info gjzq2013072300004785493108s1360wan 2j reg58.240.209.78問題的關鍵在於先找出新使用者 新使用者 僅在7月份登陸過平台的使用者為新使用者 依據map reduce思想,...

hive日誌分析實戰(二)

統計某遊戲平台新使用者渠道 日誌格式如下 text jul 23 0 00 47 info gjzq2013072300004785493108s1360wan 2j reg58.240.209.78 問題的關鍵在於先找出新使用者 新使用者 僅在7月份登陸過平台的使用者為新使用者 依據map red...

Hive 高階應用開發示例 二

hive的一些常用的高階開發 內容 1.開窗函式 2.行轉列,列轉行,多行轉一行,一行轉多行 3.分組 增強型group 4.排序 5.關聯 本次的內容 分組 排序 關聯 1.分組 group by group by with rollup group by with cube group by g...