【问题标题】:How to write pig script for calculating node degree and count如何编写计算节点度数和计数的猪脚本
【发布时间】:2014-11-18 20:02:07
【问题描述】:

如何为此编写猪脚本?

我有一个文本文件,其中包含彼此为朋友的用户的 ID 例如(data.txt)

id  id
1   2
1   3
1   4
2   1
2   5
3   1
4   8

所以用户 id 1 是 3 个人的朋友,用户 id 2 是 2 个人的朋友,依此类推......

我想计算并按降序列出最大好友数以及有多少用户拥有这么多好友

所以是这样的:1 个用户有 3 个朋友,1 个用户有 2 个朋友,2 个用户有 1 个朋友 试图获取这样的列表

number of user    number of friends (highest first)
1                   3
1                   2
2                   1

感谢任何帮助

【问题讨论】:

  • 在输出中为什么用户 1 来了 2 次,1-3、1-2?输出是这样的1-3,2-2,3-1,4-1吗?你能确认一下吗?
  • 在输出中,1代表用户数(不是id)。所以在数据集中有一个 id 为 1 的用户有 3 个朋友(id 为 2,3,4),还有另外 1 个用户(id 为 2)有两个朋友(id 为 1,5)。所以换句话说,有1个用户有3个朋友,有1个用户有2个朋友,有2个用户有1个朋友

标签: hadoop apache-pig


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    相关资源
    最近更新 更多