我有一个具有以下结构的数据 -
美国约翰一世 玛丽CN 3史密斯美国 4约翰美国 5 Mary CN我需要在每个国家/地区内找到重复的名称。结果应该是这样的 {US:(1,John,US),(4,John,US)} {CN:(2,Mary,CN),(5,Mary,CN)}。有人可以帮我解决我的问题吗?
我可以加载数据并按国家/地区名称对其进行分组。
答案 0 :(得分:2)
我假设你有以下格式的输入:
1 John US
2 Mary CN
3 Smith US
4 John US
5 Mary CN
在这种情况下,您可以提出以下建议:
A = load 'data.txt' using PigStorage(' ')
as (id:int, name:chararray, country:chararray);
B = foreach (group A by (country, name)) generate group.country, A,
COUNT(A) as count;
C = foreach (FILTER B by count > (long)1) generate country, A;
dump C;
(CN,{(2,Mary,CN),(5,Mary,CN)})
(US,{(1,John,US),(4,John,US)})