我正在尝试比较猪的两个数据集。
A = Load 'file' using pigstorage('|') (id : chararray, id1: charray, id2 : charray, name: charray, name1 : chararray, adr : chararray);
B = Load 'file1' using pigstorage('|') (id : chararray, id1: charray, id2 : charray);
假设我有上面的架构,其中来自文件1(id,id1,id2)的组合应该等于来自文件2的(id,id1,id2)的组合。
比较之后。我想将输出存储在组合匹配的位置 (id:chararray,id1:charray,id2:charray,name:charray,name1:chararray,adr:chararray)
此外,我想知道如何输出与单独文件不匹配的组合的结果。
任何人都可以帮助我。在此先感谢您的帮助!
答案 0 :(得分:0)
您只需使用JOIN
即可找到匹配的组合。 (我使用LEFT OUTER JOIN来获得MATCHED和NON_MATCHED)
A = Load 'file1' using PigStorage('|') as (id : chararray, id1: chararray, id2 : chararray, name: chararray, name1 : chararray, adr : chararray);
B = Load 'file2' using PigStorage('|') as (id : chararray, id1: chararray, id2 : chararray);
C = JOIN A BY (id, id1, id2) LEFT OUTER, B BY (id, id1, id2);
然后,使用SPLIT
分隔MATCHED和NOT_MATCHED。
SPLIT C INTO MATCHED IF B::id is not null, NOT_MATCHED IF B::id is null;