2013-03-09 74 views
1

我有两个数据集与下面的数据文件(〜每个文件500个millinons线):找到差异的两个数据集用Hadoop

Dataset1: 
a1 
a2 
a3 
a4 

Dataset2: 
a1 
a2 

我想找到dataSet1的元素未在现有Dataset2 所以,结果应该是:

Dataset3 
a3 
a4 

有什么用Hadoop做到这一点的最好方法是什么?任何与联系有关的机制,或猪,还是其他?谢谢。

回答

4

你可以轻松使用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!

3

这是很容易使用猪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);