我在包含以下数据的文件中有两个数据集(每个文件中约500毫安行):
Dataset1:
a1
a2
a3
a4
Dataset2:
a1
a2
我想在Dataset1中找到数据集2中不存在的元素 所以,结果应该是:
Dataset3
a3
a4
使用Hadoop执行此操作的最佳方法是什么?任何与加入相关的机制,或猪,或其他什么?感谢。
答案 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);