Hive語句的執行順序
order by
的字段一定要使用別名,group by
不能用別名,為什麼?原因涉及Hive-SQL語句執行的順序,其執行順序跟我們代碼寫的順序是不同的。
代碼寫的順序:
代碼執行的順序:
hive基于MapReduce,所以他的執行順序决定了hive語句的執行順序,可以再任意語句前,加上explain
查看,簡單說明如下:
Map階段:
執行from,進行表的查找與加載
執行where過濾,進行條件過濾與篩選
執行select査詢:進行輸出項的篩選
執行group by分組:描述了分組後需要計算的函數
map端檔合併:map端本地溢出寫檔案的合併操作,每個map最終形成一個暫存檔案。
Reduce階段:
group by:對map端發送過來的數據進行分組並進行計算。
select:最後過濾column用於輸出結果
limit排序後進行結果輸出到HDFS
Last updated