如何为此编写 pig 脚本?
我有一个文本文件,其中包含彼此成为 friend 的用户的ID
例如(data.txt)
id id
1 2
1 3
1 4
2 1
2 5
3 1
4 8
因此,用户ID 1是3个人的 friend ,用户ID 2是2个人的 friend ,依此类推...
我想按降序计算和列出最大 friend 数以及多少用户拥有那么多 friend
像这样:1个用户有3个 friend ,1个用户有2个 friend ,2个用户有1个 friend
试图得到这样的 list
number of user number of friends (highest first)
1 3
1 2
2 1
任何帮助表示赞赏
最佳答案
你可以试试这个吗?
input.txt
1 2
1 3
1 4
2 1
2 5
3 1
4 8
PigScript:
A = LOAD 'input.txt' USING PigStorage() AS(id:int,friends:int);
B = GROUP A BY id;
C = FOREACH B GENERATE FLATTEN(COUNT(A.friends)) AS cnt;
D = GROUP C BY cnt;
E = FOREACH D GENERATE COUNT(C.cnt),group;
F = ORDER E BY group DESC;
DUMP F;
输出:
(1,3)
(1,2)
(2,1)
关于hadoop - 如何编写用于计算节点度数和计数的 pig 脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27002971/