我正在做一个联合,如下所示:
insert overwrite table T3 select * from
(
SELECT cast (c1 as decimal(6,3)) as c1, c2
FROM T1
[WHERE conditions]
UNION ALL
SELECT c1, c2
FROM T2
[WHERE conditions]
);
计算T2中的c1,它是T1中的c1是字符串的两倍。
当我在T1中铸造c1以加倍;出现以下错误:
失败:SemanticException生成映射联接任务错误:未能通过异常生成新的mapJoin运算符:索引:0,大小:0
这个表(上面查询的输出(将被插入到另一个c1列为双的表中。
如果您正在使用视图,并且这可能是连接所在的位置。
尝试禁用MapJoin作为一种变通方法,如建议此处:
set hive.auto.convert.join=false;
或者在查询中使用之前具体化视图(加载到表中(。