Hive的EXPLAIN命令續(十五)

1. 詞頻統計算法

在這裏插入圖片描述
通過上圖可以看出,在執行詞頻統計算法時,會生成兩個階段(Stage)的MapReduce任務,最後是輸出的單詞個數,通過輸出結果可以看出,從小到大排列輸出。

2. 元操作符

在這裏插入圖片描述
Hive編譯器將一個HQL轉換爲操作符,操作符Operator是Hive的最小的處理單元,每個操作符代表HDFS的一個操作或者一道MapReduce作業,所有的Operator都是hive定義的一個處理過程。比如:
SelectOperator:選擇輸出列
TableScanOperator:掃描hive表數據
LimitOperator:Limit語句
GroupByOperator:GroupBy語句

3. EXPLAIN詳解

下面執行:

EXPLAIN SELECT word, count(1) AS count FROM
       > (SELECT explode(split(line, ' ')) AS word FROM wordcount) wc
       > GROUP BY word
       > ORDER BY count;

輸出結果:在這裏插入圖片描述
一個Stage可以是一個MapReduce任務,也可以是一個抽樣階段,或者是一個合併的階段,還可以是一個limit階段,以及Hive所需要的其他某個任務的一個階段。默認情況下,Hive會一次只執行一個stage階段。
STAGE PLAN 部分比較冗長也比較複雜,stage-1和stage-2包含了這個job的大部分處理過程,而且都會觸發一個MapReduce job。
TableScan以這個表(wordcount)作爲輸入,然後產生一個只有字段col0的輸出(outputColumnNames),比如:[“Hello”,”World”,”Bye”,”World”]
UDTF Operator表生成函數,首先執行了explode函數,將數組中的每一個元素單獨佔用一行輸出。
Group By Operator 與count(1)聚合函數聯合使用,keys :col,按照列值進行分組,如果不指定,則只有一個分組;mode:hash,是按照hash映射分組。
Reduce Output Operator 輸出結果給Reduce,sort order : + 正向排序,如果爲 – 則爲反向排序; key expressions: 鍵的表達式,value expressions :值的表達式
Reduce Operator Tree:
mode:mergepartial 合併各個部分聚合的結果,輸出爲_col0,_col1;File Output Operator 輸出中間文件
在這裏插入圖片描述
Map Operator Tree:
Reduce Output Operator: key 是第二列,也就是最後計算的每個單詞個數的列,進行正向排序,然後輸出到Reduce,這個操作主要就是進行正向排序的,也就是執行ORDER BY語句
Reduce Operator Tree:
expressions:VALUE,KEY 選取要輸出的列,又反轉了過來,然後outputColumnNames:_col0,_col1進行輸出

在這裏插入圖片描述

由於這個job沒有LIMIT語句,因此Stage-0階段是一個沒有任何操作的階段,Fetch Operator 客戶端獲取數據;limit : -1 不限定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章