根据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而只是假设输入和输出表被分块并在同一列上排序?
答案 0 :(得分:0)
要告诉配置单元执行bucketed map join,请在查询中设置以下内容
set hive.optimize.bucketmapjoin=true;
将减速器数设置为零
set mapreduce.job.reduces=0