2015-11-21 31 views
0

我有配置單元查詢,它讀取5個大型表並將記錄輸出到下一個進程。所有這些表都在proc_dt上進行了分區,並在user_id(5個存儲桶)上進行了分區。在user_id上進行連接並在proc_dt上進行篩選。Hive Bucketing - 如何運行特定存儲桶的配置單元查詢

如何爲所有表的特定桶運行此查詢?例如。我想爲所有表的第一桶運行查詢。

這樣做的原因是,一旦完成第一個桶的查詢,我可以將輸出數據發送到下一個進程。當下一個進程正在運行時,我可以完成下一個桶的查詢等等。這樣下一個進程不會等待整個查詢完成。

如果我有一個更多的列有Mod5的用戶ID,那麼我會去分區。但是沒有這樣的欄目,我不能添加它。

任何人都可以請給我一些解決方案。任何建議都會非常有幫助。

回答

0

您可以在查詢語句中指定分區,但不能指定分區。剷鬥用於優化目的 - 例如更快的採樣和地圖邊連接。但是它們對sql語句不可見。

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

因此,這裏的文檔例如:

CLUSTERED BY(user_id) INTO 256 BUCKETS; 

這顯然不允許按值/名稱訪問單個桶。

+0

嗨,感謝您的建議。我無法在user_id列上創建分區,因爲它是唯一的,我無法將任何列添加到源表中。有什麼辦法可以達到這個要求嗎? –

+0

@kishor這是你原來的問題的答案 - 關於如何查詢桶(這是不可能的)。 – javadba