左只加入pig(a-b)

pgky5nke  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(272)

我有两个数据集
文件1

11,A,2013
12,B,2014
13,C,2015

文件2

11,A,2016,Y
15,D,2017,Y
13,C,2016,N
10,K,2017,N

我想基于这些数据集的第一列执行一个仅左连接。这是我的Pig剧本。

A_C01 = LOAD '/user/uszanr8/pigtest/file3' using PigStorage(',') ; 
B_C08 = LOAD '/user/uszanr8/pigtest/file1'  using PigStorage(','); 
C_C01_FILT = FILTER A_C01 BY $3 == 'Y';
E_JOINED_BY_CLM_NBR = JOIN C_C01_FILT BY $0 , B_C08 BY  $0 ;
DUMP E_JOINED_BY_CLM_NBR;

我的实际数据有更多的记录和列。
如何从没有使用cogroup的pig中筛选的与右数据集不匹配的左数据集获取记录。

0ejtzxu1

0ejtzxu11#

A = LOAD '/user/uszanr8/pigtest/file1' using PigStorage(',')  AS(l1:int,l2:chararray,l3:int); 
B = LOAD '/user/uszanr8/pigtest/file2'  using PigStorage(',') AS(r1:int,r2:chararray,r3:int,r4:chararray); 
C = FILTER B BY r4 == 'Y';
D = JOIN A BY l1  LEFT OUTER, B BY r1 ;
E = FILTER D BY r1 is NULL;
F = FOREACH E GENERATE l1,l2,l3;
DUMP F;

对于上述代码,输出如下

12,B,2014
13,C,2015

如果您需要a(左侧关系)中的所有记录,那么只需删除e关系即可;
希望这有帮助。。

相关问题