防止配置单元创建减速器

时间:2017-07-29 11:12:42

标签: hive

根据Hive的文档,如果表T1和T2被删除并按相同的列排序,那么当我们这样做时

insert overwrite table T2 select * from T1;

不应该创建任何reducer而只是mappers。

但是,我的情况略有不同。我在T1中有C1和C2列,在T2中有C1和C3。

我想做这样的事情:

insert overwrite table T2 select C1, transform(C2) as C3 using app

但是,由于我们在使用transform时无法使用任何其他列,因此我将代码更改为

insert overwrite table T2 select transform(C1, C2) as (C1, C3) using app

但是,当我这样做时,hive不再知道,输入和输出表被分解并在同一列上排序,这导致创建一个缩减步骤。

有没有办法告诉hive,不是创建reducers而只是假设输入和输出表被分块并在同一列上排序?

1 个答案:

答案 0 :(得分:0)

要告诉配置单元执行bucketed map join,请在查询中设置以下内容

set hive.optimize.bucketmapjoin=true; 

将减速器数设置为零

set mapreduce.job.reduces=0