我想表演“保留所有 a
在 A
哪里 a.field == b.field
对某些人来说 b
在 B
“在ApachePig。我是这样实施的,
AB_joined = JOIN A by field, B by field;
A2 = FOREACH AB_joined GENERATE A::field as field, A::field2 as field2, A::field3 as field3;
正在枚举所有 A
的词条很傻,我宁愿做这样的事,
A2 = FOREACH AB_joined GENERATE flatten(A);
然而,这似乎不起作用。有没有其他方法可以让我不用枚举就做一些等价的事情 A
的字段?
4条答案
按热度按时间wlwcrazw1#
对于12号及以上的清管器,使用以下元组:https://pig.apache.org/docs/r0.12.0/func.html#plucktuple.
2uluyalo2#
可以使用cogroup将a的列与b的列分开。当a的模式是动态的并且您不希望代码在a的模式更改时失败时,这一点特别有用。
希望这有帮助。
rfbsl7qr3#
这应该起作用:
xesrikrc4#
至少从0.9.1开始,您可以使用星型表达式或投影范围表达式从元组中选择多个字段。有关详细信息,请阅读pig latin 0.15.0,表达式一章。
这是我的例子,我只是让你理解。
让我们加入a&b,只选择a的字段
或
使用星形表达式选择所有字段
使用项目范围表达式选择所有不同的字段(没有b::id字段)
有时,当一个关系中有几十个字段,而另一个关系中只有几个字段时,它非常有用。