2013-07-04 79 views
2

我想查找在Hive中查詢的預期運行時間。使用EXPLAIN提供執行計劃。有沒有辦法找到預期的時間?配置單元查詢查詢的預期運行時間

我需要Hive等效的SQL查詢說明成本。

+1

我非常喜歡這個主意。請讓我們知道,如果你找到一些直接的方式來實現這一點。謝謝。 – Tariq

回答

1

我認爲這是不可能的,因爲內部映射減少得到執行的任何特定的Hive查詢。而且映射減少作業的執行時間取決於羣集負載及其配置。所以很難預測執行時間。也許你可以在運行查詢之前做一件事情,你可以使用一些計時器,然後在完成之後你可以計算執行所需的確切執行時間。

0

也許您可以使用分區,存儲桶功能等從表格中抽取一小部分記錄,然後針對小數據集運行查詢。記下執行時間,然後乘以因子(total_size/sample_size)。

2

目前沒有OOTB功能可以實現此功能。實現這一目標的一種方法是從歷史中吸取教訓。根據以前運行的類似數據和查詢收集模式,並嘗試推斷出一些見解。您可能會在此過程中找到像Starfish這樣的工具。

我不建議你根據數據子集來決定任何事情,因爲在小數據集和實際數據集上運行查詢是非常不同的。這對測試功能很好,但不適合任何成本近似。其原因是系統資源(磁盤,CPU插槽,N/W等),系統配置,其他正在運行的作業等過程中涉及很多因素,您可能會在小數據集上找到平滑操作,但隨着數據量的增加,所有這些因素開始發揮非常重要的作用。即使是一個小配置參數也可能扮演重要角色(您可能有時會注意到Hive查詢最初運行速度很快,但逐漸變慢)。此外,執行Hive查詢比簡單的MR作業涉及更多。

看到這個JIRA,得到一些想法,他們在哪裏談論開發一個基於成本的查詢優化的蜂巢連接。您也許會發現this有幫助。