0

这个问题可能听起来很奇怪,但它一直在我的脑海里。假设我有一组单列数据。如何在每一行可用的第二列旁边放置一个静态字符串?因此,如果单列数据集的第一行说“hello”,那么两列等效项应该说“hello”、“world”。

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

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

如果这可以通过 group all 或类似的方式完成,请提供您的提示。

4

1 回答 1

1

你在正确的轨道上,但 bincond 是不必要的。你可以做

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

但是,如果您正在执行此操作,则即使这也不是必需的,因此您可以JOIN稍后执行。 JOIN接受表达式和字段,所以你可以这样做

joined = JOIN fnl1 BY 1, other BY 1;

但即使 THIS 也是不必要的,因为您只是在执行一个交叉产品,而 Pig 比您领先一步:

crossed = CROSS fnl1, other;

最后一个陈述是我认为您正在寻找的,但希望其他陈述对您有所帮助。

于 2013-06-26T16:03:53.787 回答