通过GROUP ALL加入数据集

时间:2013-06-26 10:54:59

标签: apache-pig

这个问题可能听起来很奇怪,但总是在我的脑海里。我们假设我有一组一列数据。如何为每条可用线路在第二列旁边放置一个静态字符串?因此,如果单列数据集的第一行显示为“hello”,则两列等效值应为“hello”,“world”。

如果您想知道我为什么要这样做,那是因为,稍后在我的脚本中我需要将单列数据集与另一个数据集连接起来,前者没有参考点。这是我到目前为止所做的:

fnl2 = FOREACH fnl1 GENERATE
var1,
(var1 == var1 ? 'World' : 'World') AS var2;

如果可以通过全部或类似的组进行,请提供您的提示。

1 个答案:

答案 0 :(得分:1)

你在正确的轨道上,但是不需要二进制。你可以做到

fnl2 = FOREACH fnl1 GENERATE var1, 'World' AS var2;

但即使这样做也没有必要,所以你可以稍后执行JOINJOIN包含表达式和字段,因此您可以执行

joined = JOIN fnl1 BY 1, other BY 1;

但即便这样也是不必要的,因为你只是在执行交叉产品,而Pig比你领先一步:

crossed = CROSS fnl1, other;

最后一个陈述是我认为你正在寻找的,但希望其他人为你说明一些有用的观点。