此文為翻譯的文件,英文連線為
hive 查詢流程圖如下
圖中可以看出查詢主要元件包含
執行流程詳細解析
(1)step 1:ui(user inte***ce
)呼叫的
driver
的execute介面
(2)step 2:
driver為查詢建立會話控制代碼,並將查詢傳送給
compiler以生成執行計畫,
(3)step 3 and 4:
compiler從
metastore獲取相關的元資料定義
(4)step 5:
元資料用於對查詢樹中的表示式進行型別檢查,以及基於查詢謂詞調整分割槽,
生成計畫
execution engine
將各個階段提交個適當的元件執行。
(6)step
7, 8 and 9:在每個任務(
)中,表或者中間輸出相關的反序列化器從hdfs讀取行,並通過相關的操作樹進行傳遞。一旦這些輸出產生,將通過序列化器生成零時的的hdfs檔案(這個只發生在只有map沒有reduce的情況),生成的hdfs零時檔案用於執行計畫後續的map/reduce階段。對於dml操作,零時檔案最終移動到表的位置。該方案確保不出現髒資料讀取(
檔案重新命名是hdfs中的原子操作
),對於查詢,臨時檔案的內容由
execution engine
直接從hdfs讀取,作為從driver fetch api的一部分
這個我現在基於英文做了翻譯,後面還的好好看看
hive學習系列(一)什麼是hive及hive的架構
Hive系列 二 Hive基本環境安裝
由於之前的hadoop集群是用docker搭建的,所以後面整個大資料環境,本人都會採用docker構建,hive環境安裝需在之前的hadoop基礎上構建,參考文章如下 hadoop系列 一 docker部署hadoop集群 啟動docker,執行之前儲存的hadoop映象,進入容器內部,再按下面操作...
hive入門學習 hive的調優 二)
hive入門學習 hive的調優 二 hive會把查詢轉化成為乙個或者多個階段,這樣的階段可以是mapreduce階段,抽樣階段,合併階段,limit階段等等。預設情況下hive一次只會執行乙個階段,不過某些特定的階段可能會包含眾多的階段,而這些階段並非互相依賴,可以並行執行,這樣就可以大幅度的縮短...
hive 學習系列六 hive 去重辦法的思考
create table if not exists tubutest name1 string,name2 string row format delimited fields terminated by stored as textfile select from ods.wdtest 1 11...