如何为此编写 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/

10-16 21:34