Impala是否在Hive Bucketed表中有效地使用了Buckets?

时间:2015-04-29 10:16:58

标签: hadoop hive impala

我正在改善表格的表现。

说这个表:

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应用bucketing,因为查询通常将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;

此表将使用Hive创建并加载,并从Impala中查询...

我想知道的是,这个表是否能够提高impala查询的性能 - 我不确定impala如何与存储桶一起工作。

1 个答案:

答案 0 :(得分:2)

我尝试通过Hive(这是一个6GB的表格)创建一个bucketed和non-bucketed表格表

我尝试对两者的结果进行基准测试。有轻微/没有区别。

我也试过分析两个查询的配置文件,但没有太大的区别。

答案是,Impala不知道某个表是否被删除,因此它没有利用它(IMPALA-1990)。了解表中分区和文件的唯一方法是使用COMPUTE STATS

顺便说一句,对Impala使用的表进行分解并不浪费。 如果我们必须限制表格中的小文件数量,我们可以将其打开并打开Hive transactions(可从Hive 0.13.0获得)