HiveSQL腳本耗時長問題排查

1.背景

    底層引擎採用的是Tez,爲了快速定位自己的腳本是哪一段性能較差,首先需要在腳本里面設置腳本名稱,命令如下:

set tez.job.name=dws_contract_detail_info_s_d;

    這是我的一個例子,設置好名稱後,開始執行腳本,等腳本執行完成後就可以開始排查問題。

2.定位步驟

(1)訪問yarn的日誌界面,然後點擊finish,最後在檢索上面設置的腳本名稱。

 

圖1

(2)點擊history,查看日誌,通過圖3可以看到每一段SQL的耗時情況。

 

(3)點擊DagName下面的名稱,查看具體哪一段SQL,如圖4。

 

 (4)查看每個操作的相關耗時情況,發現3個map有一個耗時明細比其他兩個長,說明有數據傾斜的情況。

 (5)使用explain查看SQL執行計劃,查看有幾個階段,是否有廣播,掃描的數據量情況等。本次SQL在進行join時過濾條件有點問題。

 

(6)也可以點擊圖5的view進行詳細日誌查看。

 

 

3.結論

    添加防止數據傾斜的參數,並且優化了一下子查詢。

SET hive.optimize.skewjoin=true;(MapReduce引擎)

SET tez.join.skewjoin=true;(Tez引擎)

 

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