1.使用explain
explain可以展示 hive是如何將查詢 轉化爲 mapreduce 任務的。
示例:
explain select sum(number) from onecol;
執行完上面的 語句後,會 打印出抽象語法樹。它表明 Hive是如何將 查詢解析成 token(符號)和literal(字符)。
儘管 hiveql查詢會將輸出 寫入到 控制檯,但hive 實際上 會先將輸出寫入到1個臨時文件中,即’tok_insert (tok_destination (tok_dir tok_tmp_file))’.
HIVE任務的拆解:
- 1個hive任務會包含 1個或 多個 stage(階段),不同的stage間會存在依賴關係。
- 越複雜的查詢 通常會引入越多的stage,而通常stage越多就需要越多的時間的來完成任務。
- 1個stage可以是:1)1個mapreduce任務,2)1個抽樣階段;3)1個合併階段;4)1個limit階段。
- hive在默認情況下,一次只執行1個stage(階段),但是可以通過設置使其 並行執行。
2.常見的explain語句及含義。
- 如下所示,如果 job中沒有limit語句,那麼stage-0階段會顯示limit:-1.
stage: Stage-0
Fetch Operator
limit:-1
3.exlain和explain extend區別。
使用explain extend 語句可以產生更多的輸出信息。