hive的中的sql的執行順序。


今天在測試在寫hive sql的時候注意到在進行查詢的時候我們把order by放在后面,前面如果沒有這個字段,則執行報錯。

他就會報下面的錯誤。其實這個時候我們就想着是不是哪里寫錯了。但是仔細一看。好像並沒有錯誤。

這個時候我們就可能會想是不是因為在hive當中語句的執行順序有問題。於是我在前面select的后面加上order by 之后的字段:

果然是加上之后,執行完全沒有問題。這個時候我們就來總結一下hive語句的執行順序。
在hive的執行語句當中的執行查詢的順序:

這是一條sql:

select … from … where … group by … having … order by … 

執行順序:

from … where … select … group by … having … order by …

其實總結hive的執行順序也是總結mapreduce的執行順序:

MR程序的執行順序:

map階段:

 1.執行from加載,進行表的查找與加載

2.執行where過濾,進行條件過濾與篩選

3.執行select查詢:進行輸出項的篩選

4.執行group by分組:描述了分組后需要計算的函數

5.map端文件合並:map端本地溢出寫文件的合並操作,每個map最終形成一個臨時文件。 然后按列映射到對應的reduceReduce階段:

Reduce階段:

1.group by:對map端發送過來的數據進行分組並進行計算。

2.select:最后過濾列用於輸出結果

3.limit排序后進行結果輸出到HDFS文件

所以通過上面的例子我們可以看到,在進行selectt之后我們會形成一張表,在這張表當中做分組排序這些操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM