加入PIG中使用'merge'

时间:2012-06-11 19:35:22

标签: hadoop apache-pig hdfs

我是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

“使用'合并'”会给我想要的输出吗?

我试过了,但事实并非如此。

你能让我知道我在这里错过了什么。

1 个答案:

答案 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

了解有关每个

的更多信息