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

时间:2013-03-09 01:09:49

标签: hadoop hive apache-pig

我在包含以下数据的文件中有两个数据集(每个文件中约500毫安行):

Dataset1:
a1
a2
a3
a4

Dataset2:
a1
a2

我想在Dataset1中找到数据集2中不存在的元素 所以,结果应该是:

Dataset3
a3
a4

使用Hadoop执行此操作的最佳方法是什么?任何与加入相关的机制,或猪,或其他什么?感谢。

2 个答案:

答案 0 :(得分:5)

你可以使用HIVE轻松地做到这一点 1. Create a table
2. Load data
3.查询,简单LEFT JOIN:

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

完成! GL!

答案 1 :(得分:4)

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