1

我创建了一个带有桶的表,按如下方式聚集和排序:

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;

我得到未分类的结果。这是否意味着表格未排序?如果我将这个表与其他表连接起来,这个表上的排序合并连接会起作用ab

BDW:当我像这样查询 old_table(插入到包含的分发依据和排序依据)时:select * from old_table limit 100;我得到排序结果

4

1 回答 1

0

虽然您已将 Hive 设置为强制分桶,但您还需要将 Hive 设置为在将数据插入新表“my_table”之前强制排序。尝试这个:

hive.enforce.sorting=true;

然后你应该在新表中得到排序结果。

于 2015-02-25T16:02:05.417 回答