1. 程式人生 > >【圖文詳細 】什麼是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編譯器

 

 

  

編譯流程