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 关系;
希望这对您有所帮助..
我有两个数据集
文件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 关系;
希望这对您有所帮助..