一、hive 執行過程概述
(1) hive 將 hql 轉換成一組操作符(operator),比如 groupbyoperator, joinoperator 等
(2)操作符 operator 是 hive 的最小處理單元
(3)每個操作符代表乙個 hdfs 操作或者 mapreduce 作業
(1)parser:將 hql 語句轉換成抽象語法樹(ast:abstract syntax tree)
(2)semantic analyzer:將抽象語法樹轉換成查詢塊
(3)logic plan generator:將查詢塊轉換成邏輯查詢計畫
(4)logic optimizer:重寫邏輯查詢計畫,優化邏輯執行計畫
(5)physical plan gernerator:將邏輯計畫轉化成物理計畫(mapreduce jobs)
(6)physical optimizer:選擇最佳的 join 策略,優化物理執行計畫
上表中帶①符號的,優化目的都是盡量將任務合併到乙個 job 中,以減少 job 數量,帶②的 優化目的是儘量減少 shuffle 資料量
select pv.pageid, u.age from page_view pv join user u on pv.userid = u.userid;
map:1、以 join on 條件中的列作為 key,如果有多個列,則 key 是這些列的組合
2、以 join 之後所關心的列作為 value,當有多個列時,value 是這些列的組合。在 value 中還會包含表的 tag 資訊,用於標明此 value 對應於哪個表
3、按照 key 進行排序
shuffle:
1、根據 key 的值進行 hash,並將 key/value 對按照 hash 值推至不同對 reduce 中
reduce:
1、 reducer 根據 key 值進行 join 操作,並且通過 tag 來識別不同的表中的資料
按照 age 分組,然後統計每個分組裡面的不重複的 pageid 有多少個
該 sql 語句會按照 age 和 pageid 預先分組,進行 distinct 操作。然後會再按 照 age 進行分組,再進行一次 distinct 操作
Hive (十六)Hive 執行過程例項分析
二 join 三 group by 四 distinct 1 hive 將 hql 轉換成一組操作符 operator 比如 groupbyoperator,joinoperator 等 2 操作符 operator 是 hive 的最小處理單元 3 每個操作符代表乙個 hdfs 操作或者 mapr...
Hive總結(三)hive元件和執行過程
對hive的基本組成進行了總結 1 元件 元儲存 metastore 儲存 系統目錄以及關於表 列 分割槽等的元資料 的元件。驅動 driver 控制 hiveql 生命週期的元件,當 hiveql 查詢穿過 hive時。該驅動管理著會話控制代碼以及任何會話的統計。查詢編譯器 query compi...
hive原始碼解析之hive執行過程
儲存到相簿 2014 12 26 23 04 上傳 1.入口 bin cli.sh 呼叫clidriver類進行初始化過程 處理 e,f,h等資訊,如果是 h,列印提示資訊,並退出 讀取hive的配置檔案,設定hiveconf 建立乙個控制台,進入互動模式 2.在互動方式下,讀取每乙個輸命令列,直到...