我创建了一个带有存储桶的表,按照这样的方式进行聚类:
set hive.enforce.bucketing = true;
set mapred.reduce.tasks = 32;
create table my_table
(
a string
, b string
, c int
)
clustered by (a, b) sorted by (a, b) into 32 buckets
row FORMAT delimited fields TERMINATED BY ','
stored AS parquet
tblproperties ('parquet.compress'='SNAPPY');
数据插入如下:
insert into table my_table select * from old_table;
当我查询时:
select * from my_table limit 100;
我得到了未分类的结果。这是否意味着表没有排序?
如果我将此表与a
和b
上的其他表一起加入,那么此表上的合并联接是否会有效?
BDW:
当我查询old_table(插入到包含的分发和排序)时,如下所示:select * from old_table limit 100;
我得到了排序结果
答案 0 :(得分:0)
虽然您已将Hive设置为强制执行分段,但您还需要将Hive设置为在将数据插入新表之前强制执行排序," my_table"。试试这个:
hive.enforce.sorting=true;
然后你应该在新表中得到排序结果。