LEFT ONLY 加入 Pig (A - B)

LEFT ONLY Join in Pig (A - B)

我有两个数据集

文件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

我想根据这些数据集的第一列进行 Left Only 联接。 这是我的 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  == 'Y';
E_JOINED_BY_CLM_NBR = JOIN C_C01_FILT BY [=12=] , B_C08 BY  [=12=] ;
DUMP E_JOINED_BY_CLM_NBR;

我的实际数据有更多的记录和列。

如何在不使用 cogroup 的情况下从左侧数据集中获取与在 Pig 中过滤的右侧数据集不匹配的记录。

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 关系;

希望这对您有所帮助..