如果别名的列包含地图,
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:双)
答案 0 :(得分:1)
问题似乎是Pig没有隐式地将MAP:[]强制转换为MAP:[DOUBLE]。明确地解决问题,
B = FOREACH A GENERATE id,
( SIZE( data ) == 0 ? ( ([DOUBLE]) TOMAP('dummy', (DOUBLE)1.0) : data ) AS data;