2015-04-29 52 views
5

我正在改進表的性能。Impala是否在Hive Bucketed表中有效使用了桶?

說這個表:

CREATE TABLE user_info_bucketed(user_id BIGINT, firstname STRING, lastname STRING) 
COMMENT 'A bucketed copy of user_info' 
PARTITIONED BY(Year int, month int) 
STORED AS PARQUET; 

我打算通過USER_ID申請鏟裝,因爲查詢通常涉及user_id說明的條款。

這樣

CREATE TABLE user_info_bucketed(user_id BIGINT, firstname STRING, lastname STRING) 
COMMENT 'A bucketed copy of user_info' 
PARTITIONED BY(Year int, month int) 
CLUSTERED BY(user_id) INTO 256 BUCKETS 
STORED AS PARQUET; 

此表將被創建並加載配置單元,從黑斑羚查詢...

我想知道的是,無論是瓢潑大雨此表將提高的性能是什麼黑斑羚查詢 - 我不確定黑斑羚怎樣與桶一起工作。

+0

事實上,沒有提到存儲桶的Impala文檔表明它沒有對此有任何特殊處理。 http://www.slideshare.net/cloudera/cloudera-impala-a-modern-sql-engine-for-hadoop(幻燈片6)也提到了這一點。我無法在[Impala JIRA](https://issues.cloudera.org/browse/IMPALA)中找到與此相關的任何問題,所以我很樂意看到明確的答案。 – Nickolay

+0

感謝@Nickolay的信息,它似乎impala不認爲水桶,因爲你分享的幻燈片...(看到我的答案) –

+0

感謝您的測試結果ping我! – Nickolay

回答

2

我嘗試創建通過蜂巢一個分時段和非分時段表表(其是一個表6GB的尺寸)

我試圖基準從兩個結果。有輕微/沒有區別。

我也嘗試分析兩個查詢的配置文件,這並沒有顯示出太大的差異。

所以答案是,Impala並不知道表是否被分開,所以它沒有利用它(IMPALA-1990)。知道表中分區和文件的唯一方法是使用COMPUTE STATS

順便提一下,使用Impala所用的表並不浪費。 如果我們必須限制表中的小文件數量,我們可以將其打開並打開Hive transactions(可從Hive 0.13.0獲得)