我是Hadoop / PIG初学者。
有谁能告诉我
之间的区别grunt> A = join A by $1, B by $1 using 'merge';
和
咕噜> A =加入A $ 1,B加$ 1;
我有2个文件1.txt和2.txt,它们有以下数据
1.TXT
A 1
B 3
C 5
D 7
2.txt
AA 1
BB 2
CC 4
DD 6
我希望输出像这样合并在一起
A 1
AA 1
BB 2
B 3
CC 4
C 5
DD 6
D 7
“使用'合并'”会给我想要的输出吗?
我试过了,但事实并非如此。
你能让我知道我在这里错过了什么。
答案 0 :(得分:3)
听起来你正在获得一个内连接(通过公共密钥连接的数据集)而不是外连接(这就是你想要的输出之后的样子)。
使用关键字FULL
来表示您需要完整的外部联接:
grunt> A = join A by $1 FULL, B by $1 using 'merge';
如果两个数据集中的记录具有相同的$ 0,则可能会产生意外结果(请参阅内部联接的示例)。您可能还需要修改输出以删除两个数据集之间的缺失列。
或者,如果您只想将一个数据集附加到另一个数据集,然后排序,请使用UNION和ORDER BY运算符
grunt> U = UNION A, B;
grunt> OrderedU = ORDER U BY $1
见
了解有关每个
的更多信息