在Pig

时间:2016-02-18 19:59:51

标签: apache-pig

如果别名的列包含地图,

A = LOAD .. AS ( id : int, data : [ DOUBLE ] );

如果地图至少有一个元素,我想保留地图,否则我想用地图替换它[' dummy' :1.0d]。

B = FOREACH A GENERATE  id, 
                        ( SIZE( data ) == 0 ? TOMAP('dummy', (DOUBLE)1.0) : data ) AS data;

这会导致以下错误,

  

BinCond的两个输入必须具有兼容的模式。左手边:#133:地图右手边:udf_results#144:地图(#145:双)

1 个答案:

答案 0 :(得分:1)

问题似乎是Pig没有隐式地将MAP:[]强制转换为MAP:[DOUBLE]。明确地解决问题,

B = FOREACH A GENERATE  id, 
                        ( SIZE( data ) == 0 ? ( ([DOUBLE]) TOMAP('dummy', (DOUBLE)1.0) : data ) AS data;