2017-07-03 73 views
-1
hive -e "select e.school_id, e.school_name, e.school_location from 
(select r.college_id, r.college_name 
from 
    College r 
where 
    college_id = '6789') tab1 
full outer join 
(select e.school_id, e.school_name, e.school_location 
from university 
lateral view explode(school) encTable as e 
where 
    school_id = '12345') tab2 
    on tab1.school_id=tab2.college_id 
    limit 4 " > result456.csv 

我目前運行在那裏我加入2個表蜂巢查詢大學和學院,其中collecge_id與學校ID相符大學 ,這花費更多的時間來執行,因爲我有更多的數據這兩個大學和學院 是否有需要增加這個查詢提高性能與加入

這是從學院收集所有數據,然後學校的表現任何更新,則比較tab1.school_id = tab2.college_id 我手感不佳在性能

是否有任何其他方式可以通過提高性能獲取相同數據

+1

(1)當你所要求的性能改善,最低提什麼是當前和期望的執行時間。 (2)查詢沒有意義。提供包括所需結果的數據樣本。 –

回答

0

可能有多種原因會導致羣集處理對配置單元查詢的響應速度緩慢。 一些優化的因素,你可能需要考慮下面提到 -

  1. 您可能需要考慮使用兩個表中的數據「桶裝」的,其可能有助於做連接操作同時使用地圖連接。在情況下,school_id和college_id是唯一值而不是分區數據(分區表功能)不適合使用。 請參閱鏈接以獲取有關連接優化的更多信息 - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+JoinOptimization

  2. 您可能還需要考慮針對查詢的並行處理優化。請參考下面的鏈接以獲得更多關於語法的詳細信息 - https://community.hortonworks.com/content/supportkb/48919/how-can-i-set-hive-to-run-in-parallel-execution-to.html

  3. 我可以在您的配置單元查詢中看到您正在使用'完全外部連接',這非常昂貴。由於您尚未提及需求和樣本數據,因此如果我們可以避免完全外部聯接以獲得所需結果,則無法發表評論。

  4. 根據數據的大小您可能還需要調整羣集的合適的塊大小。

  5. 能否請你也嘗試一下進入減速號碼,建議應該您的地圖的0.95至1.75倍之間的有。另外,減速機應該有足夠的數據來處理塊大小和至少5到15分鐘。

  6. 最好的方法是使用'EXPLAIN'或'Illustrate'命令(取決於您的配置單元版本)來查看計劃如何用於處理您的查詢。它會給你更多的洞察力來優化。

沒有硬性規則和快速規則來獲得所有羣集的優化配置。您可能需要嘗試測試不同的選項以達到優化級別。