一、上次回顧
二、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...