我有两张table:
1,'hello'
2,'world'
4,'this'
和
1,'john'
3,'king'
我想要一张table
1,'hello','john'
2,'world',''
3,'' ,king
4,'this' ,''
我正在使用pig命令:
JOIN A BY code FULL OUTER,
B BY code;
但这给了我一个结果:
1,'hello',1,'john'
2,'world',,''
,'' ,3,king
4,'this' ,,''
我需要代码列来组合,如何才能做到这一点?谢谢
4条答案
按热度按时间x6yk4ghg1#
您可以使用union,然后执行groupby
工会a、b将为您提供:
现在根据id进行groupby。这将为您提供:
现在你只需要一个自定义项来解析包。在自定义项中,迭代每个键以生成格式的输出。
我也遇到了同样的问题。我就是这样解决的。
0kjbasz62#
是的,join总是产生这样的输出,这是pig的预期行为。一个选项可以是try group操作符而不是join操作符。
a、 文本
b、 文本
Pig手稿:
输出:
bagtotuple()在本机pig中不可用,您必须下载pig-0.11.0.jar并在类路径中设置它。
从以下链接下载jar:
http://www.java2s.com/code/jar/p/downloadpig0110jar.htm
3okqufwl3#
结果是
qybjjes14#
您可以在联接之后使用三元运算符来重新分配新的
code
,基于它是在a关系中填充还是在b关系中填充。在本例中,如果a.codenull
然后使用b代码,否则使用a代码。