執行語句
hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = st.name;結果,紅色字型為我新增的注釋
hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = st.name;okabstract syntax tree:
(tok_query (tok_from (tok_leftouterjoin (tok_tabref (tok_tabname student) s) (tok_tabref (tok_tabname student_tmp) st) (= (. (tok_table_or_col s) name) (. (tok_table_or_col st) name)))) (tok_insert (tok_destination (tok_dir tok_tmp_file)) (tok_select (tok_selexpr (. (tok_table_or_col s) id)) (tok_selexpr (. (tok_table_or_col s) name)))))
stage dependencies: 「這個sql將被分成兩個階段執行。基本上每個階段會對應乙個mapreduce job,stage-0除外。因為stage-0只是fetch結果集,不需要mapreduce job」
stage-1 is a root stage
stage-0 is a root stage
stage plans:
stage: stage-1
map reduce
alias -> map operator tree: 「map job開始」
s tablescan
alias: s 「掃瞄表student」
reduce output operator 「這裡描述map的輸出,也就是reduce的輸入。比如key,partition,sort等資訊。」
key expressions: 「reduce job的key」
expr: name
type: string
sort order: + 「這裡表示按乙個字段排序,如果是按兩個字段排序,那麼就會有兩個+(++),更多以此類推」
map-reduce partition columns: 「partition的資訊,由此也可以看出hive在join的時候會以join on後的列作為partition的列,以保證具有相同此列的值的行被分到同乙個reduce中去」
expr: name
type: string
tag: 0 「用於標示這個掃瞄的結果,後面的join會用到它」
value expressions: 「表示select 後面的列」
expr: id
type: int
expr: name
type: string
st tablescan 「開始掃瞄第二張表,和上面的一樣」
alias: st
reduce output operator
key expressions:
expr: name
type: string
sort order: +
map-reduce partition columns:
expr: name
type: string
tag: 1
reduce operator tree: 「reduce job開始」
join operator
condition map:
left outer join0 to 1 「tag 0 out join tag 1」
condition expressions: 「這裡也是描述select 後的列,和join沒有關係。這裡我們的select後的列是 s.id 和 s.name, 所以0後面有兩個字段, 1後面沒有」
0
1 handleskewjoin: false
outputcolumnnames: _col0, _col2
select operator
expressions:
expr: _col0
type: int
expr: _col2
type: string
outputcolumnnames: _col0, _col1
file output operator
compressed: false
globaltableid: 0
table:
input format: org.apache.hadoop.mapred.textinputformat
output format: org.apache.hadoop.hive.ql.io.hiveignorekeytextoutputformat
stage: stage-0
fetch operator
limit: -1
time taken: 0.216 seconds
hive執行計畫解析
3.sql執行計畫對映mr流程 4.執行計畫優化 2.1 大資料兩類sql框架 這兩種sql框架,概括了所有的大資料sql,幾乎不可能有第三種寫法,區別可能是業務複雜,寫的複雜點兒而已。2.2 解析sql執行計畫流程詳解 六步將普通的sql對映成了作業任務。重點是 邏輯執行計畫優化和物理執行計畫優化...
Hive 看懂Hive的執行計畫
一般執行計畫有兩個部分 stage dependencies 各個stage之間的依賴性 stage plan 各個stage的執行計畫 乙個stage並不一定是乙個mr,有可能是fetch operator,也有可能是move operator。乙個mr的執行計畫分為兩個部分 map operat...
ocacle 執行計畫 Oracle執行計畫
一 什麼是oracle執行計畫?執行計畫是一條查詢語句在oracle中的執行過程或訪問路徑的描述 二 怎樣檢視oracle執行計畫?因為我一直用的plsql遠端連線的公司資料庫,所以這裡以plsql為例 配置執行計畫需要顯示的項 工具 首選項 視窗型別 計畫視窗 根據需要配置要顯示在執行計畫中的列 ...