【圖文詳細 】什麼是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編譯器
編譯流程