0

我有一个具有以下结构的数据 -

1 约翰美国 2 玛丽 CN 3 史密斯美国 4 约翰美国 5 玛丽 CN

我需要在每个国家/地区找到重复的名称。结果应该是这样的 {US : (1, John, US),(4,John, US)} {CN : (2, Mary, CN),(5, Mary, CN)}。有人可以帮我解决我的问题吗?

我能够加载数据并按国家/地区名称对其进行分组。

4

1 回答 1

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)})
于 2013-06-19T19:08:00.293 回答