2014-02-21 62 views
0

我使用蜂巢選擇內大範圍的分區採用蜂巢選擇內大範圍的分區數據

下面的數據就出來了一些問題,就是在HQL我要執行:

INSERT OVERWRITE TABLE summary_T partition(DateRange='20131222-20131228') 
select col1, col2, col3 From RAW_TABLE 
where cdate between '20131222' and '20131228' 
and (trim(col1) IS NULL or trim(col1)='') 
and length(col2)=12; 

「CDATE」爲表RAW_TABLE

的分區,但是stucks給我的作業ID

後,有一次,我把它變成:

INSERT OVERWRITE TABLE summary_T partition(DateRange='20131222-20131228') 
select col1, col2, col3 From RAW_TABLE 
where cdate between '20131222' and '20131225' 
and (trim(col1) IS NULL or trim(col1)='') 
and length(col2)=12; 

然後開始工作

是否有任何解決方案,可以幫助我執行第一HQL?

感謝您的幫助!

回答

0

我遇到過類似的問題,並在我的SELECT語句結尾嘗試使用CLUSTER BY 'partition_column'。使用它之後,我可以執行INSERT以獲得更大的日期範圍。

所以,如果你改變你的查詢:

INSERT OVERWRITE TABLE summary_T partition(DateRange='20131222-20131228') 
select col1, col2, col3 From RAW_TABLE 
where cdate between '20131222' and '20131228' 
and (trim(col1) IS NULL or trim(col1)='') 
and length(col2)=12 
CLUSTER BY DateRange; 

性能應改善。

有關CLUSTER BY如何幫助查詢的解釋,你可以通過這個手冊頁這也解釋得很詳細:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy

+0

感謝您分享您的經驗! 我會嘗試這種方法,然後報告回來。 –

+0

我收到以上錯誤: FAILED:SemanticException [錯誤10004]:行6:11無效表別名或列引用'DateRange':(可能的列名是:col1,col2,col3) 看起來像它可以'使用分區列執行'CLUSTER BY' –

+0

試着先用CLUSTER BY執行Select語句。在我的情況下,我能夠執行INSERT。它沒有拋出任何這樣的錯誤。 – Neels