使用Hadoop查找两个数据集的差异

使用Hadoop查找两个数据集的差异,hadoop,hive,apache-pig,Hadoop,Hive,Apache Pig,我在文件中有两个数据集,其中包含以下数据(每个文件中约500百万行): 我想在Dataset1中查找Dataset2中不存在的元素 因此,结果应该是: Dataset3 a3 a4 使用Hadoop实现这一点的最佳方法是什么?有没有加入相关的机制,或者猪,或者其他什么?谢谢。您可以使用HIVE轻松完成。 1. 2. 3.查询,简单左连接: SELECT Dataset1.a LEFT JOIN Dataset1.a=Dataset2.a WHERE Dataset2.a IS NULL

我在文件中有两个数据集,其中包含以下数据(每个文件中约500百万行):

我想在Dataset1中查找Dataset2中不存在的元素 因此,结果应该是:

Dataset3
a3
a4

使用Hadoop实现这一点的最佳方法是什么?有没有加入相关的机制,或者猪,或者其他什么?谢谢。

您可以使用HIVE轻松完成。
1.
2.
3.查询,简单左连接:

SELECT Dataset1.a LEFT JOIN Dataset1.a=Dataset2.a WHERE Dataset2.a IS NULL

完成了!德国劳埃德船级社

您可以使用HIVE轻松完成。
1.
2.
3.查询,简单左连接:

SELECT Dataset1.a LEFT JOIN Dataset1.a=Dataset2.a WHERE Dataset2.a IS NULL

完成了!德国劳埃德船级社

使用
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);

使用
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);