我正在尝试比较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)的组合。
在比较is之后,我希望将组合匹配的输出存储为(id : chararray,id1: charray,id2 : charray,name1 : chararray,adr : chararray)
另外,我还想知道如何输出没有匹配到单独文件的组合的结果。
有人能帮我吗。提前感谢您的帮助!
发布于 2017-08-09 00:04:05
您可以简单地使用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;
https://stackoverflow.com/questions/45579078
复制相似问题