(轉載)Hive學習筆記--Hive 原理

第一部分:Hive原理
爲何要學習Hive的原理
•一條Hive HQL將轉換爲多少道MR做業
•怎麼樣加快Hive的執行速度
•編寫Hive HQL的時候咱們能夠作什麼
•Hive 怎麼將HQL轉換爲MR做業
•Hive會採用什麼樣的優化方式
Hive架構&執行流程
 
Hive執行流程
•編譯器將一個Hive QL轉換操做符
•操做符是Hive的最小的處理單元
•每一個操做符表明HDFS的一個操做或者一道MapReduce做業
Operator
•Operator都是hive定義的一個處理過程
•Operator都定義有:
•protected List  <Operator<?   extends Serializable  >> childOperators; 
•protected List  <Operator<?   extends Serializable  >> parentOperators; 
•protected boolean done; // 初始化值爲false
•全部的操做構成了 Operator圖,hive正是基於這些圖關係來處理諸如limit, group by, join等操做
 
Hive執行流程
操做符
描述
TableScanOperator
掃描hive表數據
ReduceSinkOperator
建立將發送到Reducer端的<Key,Value>對
JoinOperator
Join兩份數據
SelectOperator
選擇輸出列
FileSinkOperator
創建結果數據,輸出至文件
FilterOperator
過濾輸入數據
GroupByOperator
GroupBy語句
MapJoinOperator
/*+mapjoin(t) */
LimitOperator
Limit語句
UnionOperator
Union語句
•Hive經過ExecMapper和ExecReducer執行MapReduce任務
•在執行MapReduce時有兩種模式
•本地模式
•分佈式模式
ANTLR詞法語法分析工具
•ANTLR—Another Tool for Language Recognition
•ANTLR 是開源的
•爲包括Java,C++,C#在內的語言提供了一個經過語法描述來自動構造自定義語言的識別器(recognizer),編譯器(parser)和解釋器(translator)的框架
•Hibernate就是使用了該分析工具
 
Hive編譯器
 
 
 
 
編譯流程
 
第二部分:一條HQL引起的思考
案例HQL
•select key from test_limit  limit 1
•Stage-1
•TableScan Operator>Select Operator-> Limit->File Output Operator
•Stage-0
•Fetch Operator
•讀取文件
MapperInputFormat
•該hive MR做業中指定的mapper是:
•mapred.mapper.class = org.apache.hadoop.hive.ql.exec.ExecMapper
•input format是:
•hive.input.format  = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 
•該hive MR做業中指定的mapper是:
•mapred.mapper.class = org.apache.hadoop.hive.ql.exec.ExecMapper
•input format是:
•hive.input.format  = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 
相關文章
相關標籤/搜索