HIVE調優【1】如何讀懂explain打印出的抽象語法樹

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語句及含義。

  1. 如下所示,如果 job中沒有limit語句,那麼stage-0階段會顯示limit:-1.
stage: Stage-0
  Fetch Operator
    limit:-1
    

3.exlain和explain extend區別。

使用explain extend 語句可以產生更多的輸出信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章