比较Pig中的两个数据集

时间:2017-08-08 22:39:33

标签: apache-pig

我正在尝试比较猪的两个数据集。

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)

此外,我想知道如何输出与单独文件不匹配的组合的结果。

任何人都可以帮助我。在此先感谢您的帮助!

1 个答案:

答案 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;