我的数据集如下所示:
( A, (1,2) )
( B, (2,9) )
我想“展平”Pig 中的元组,基本上为内部元组中找到的每个值重复每个记录,这样预期的输出是:
( A, 1 )
( A, 2 )
( B, 2 )
( B, 9 )
我知道当元组 (1,2) 和 (2,9) 是袋时这是可能的。
你的洞察力很好;可以通过转换包中的元组来实现。我们想要的模式是:{a: chararray,{(chararray)}} 例如:(A,{(1),(2)})
这是您问题的解决方案:
A = LOAD 'data.txt' AS (a:chararray,b:(b1:chararray,b2:chararray));
B = FOREACH A GENERATE a, TOBAG(b.b1,b.b2);
C = FOREACH B GENERATE a, FLATTEN($1);
神奇的部分是 TOBAG 运算符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)