2013-06-19 10 views
0

我有具有以下結構的數據 -如何使用拉丁語分組後找到類似的元組?

約翰美國 2瑪麗CN 3·史密斯美國 4約翰美國 5瑪麗CN

我需要找到每個國家重名。結果應該是這樣的 {US:(1,John,US),(4,John,US)} {CN:(2,Mary,CN),(5,Mary,CN)}。有人可以幫我用豬腳本來解決我的問題嗎?

我可以加載數據並按國名分組。

回答

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