1

我是 Hadoop/PIG 初学者。

谁能告诉我两者之间的区别

grunt> A = join A by $1, B by $1 using 'merge';     

并且
grunt> 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

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

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

你能告诉我我在这里想念什么吗?

4

1 回答 1

3

听起来您正在获得内部联接(通过公共键联接的数据集)而不是外部联接(这是您从所需输出中得到的样子)。

使用 word 关键字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

有关每个的更多信息

于 2012-06-11T20:16:02.403 回答