join在pig中使用“merge”

mkshixfv  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(340)

我是hadoop/pig的初学者。
谁能告诉我

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


grunt>a=加入a$1,加入b$1;
我有两个文件1.txt和2.txt有以下数据
1.txt文件
a 1级
b 3级
c 5级
第7天
2.txt文件
aa 1级
bb 2型
抄送4
第6天
我希望输出像这样合并在一起
a 1级
aa 1级
bb 2型
b 3级
抄送4
c 5级
第6天
第7天
“使用'合并'”会给我想要的输出吗?
我试过了,但是没有。
你能告诉我我错过了什么吗。

bxpogfeg

bxpogfeg1#

听起来您得到的是一个内部连接(由一个公共键连接的数据集),而不是一个外部连接(这看起来像是您从所需的输出中得到的)。
使用关键字 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

看见
http://pig.apache.org/docs/r0.9.2/basic.html#join-内部
http://pig.apache.org/docs/r0.9.2/basic.html#join-外部
http://pig.apache.org/docs/r0.9.2/basic.html#order-由
如需有关每个

相关问题