2015-03-03 41 views
0

了以下形式的蜂巢插入语句:蜂房不尊重mapreduce.job.reduces

insert into my_table select * from my_other_table; 

使用一个减速 - 即使只是之前如下已被处决:

set mapreduce.job.reduces=80; 

是有一种方法可以迫使蜂巢使用更多的减速器?没有明确的理由说明为什么这个特定的查询会执行一个reducer - 因为最后没有ORDER BY子句。

BTW源和目标表都

stored as parquet 

回答

0

在蜂房SELECT * FROM table;不使用任何减速 - 这是一个地图,唯一的工作。

一种方法来强制蜂巢在SELECT *使用的减压器是GROUP BY所有字段,例如:

SELECT field1, field2, field3 FROM table GROUP BY field1, field2, field3; 

不过,请注意,这将删除重复记录。

0

在插入查询中,您提到配置单元会尝试将所有数据写入单个文件。导致它只是一个选择*声明。因此1个减速器。

但是,如果你使用bucketing。配置单元将使用与您的存储桶相同数量的减速器。

如果你有128个桶,配置单元会激发128个reducer作业,最终它会创建128个文件。