Hive(九)Hive 執行過程例項分析

2022-08-24 21:03:10 字數 1921 閱讀 9431

一、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.在互動方式下,讀取每乙個輸命令列,直到...