我在文件中有两个数据集,其中包含以下数据(每个文件中约 500 百万行):
Dataset1:
a1
a2
a3
a4
Dataset2:
a1
a2
我想在 Dataset1 中找到 Dataset2 中不存在的元素所以,结果应该是:
Dataset3
a3
a4
使用 Hadoop 执行此操作的最佳方法是什么?任何与加入相关的机制、Pig 或其他什么?谢谢。
我在文件中有两个数据集,其中包含以下数据(每个文件中约 500 百万行):
Dataset1:
a1
a2
a3
a4
Dataset2:
a1
a2
我想在 Dataset1 中找到 Dataset2 中不存在的元素所以,结果应该是:
Dataset3
a3
a4
使用 Hadoop 执行此操作的最佳方法是什么?任何与加入相关的机制、Pig 或其他什么?谢谢。
Pig 使用COGROUP
操作符很容易做到这一点:
dataset1 = LOAD '/path/to/dataset1' USING PigStorage('\n') AS (line:chararray);
dataset2 = LOAD '/path/to/dataset2' USING PigStorage('\n') AS (line:chararray);
grpd = COGROUP dataset1 BY line, dataset2 BY line;
d1_only = FOREACH (FILTER grpd BY IsEmpty(dataset2)) GENERATE FLATTEN(dataset1);