我有一个关于Pig的问题,当执行似乎是两个级别的分组。例如,假设我有一些示例输入数据,如:
email_id:chararray from:chararray to:bag{recipients:tuple(recipient:chararray)}
e1 user1@example.com {(friend1@example.com),(friend2@example.com),(friend3@myusers.com)}
e2 user1@example.com {(friend1@example.com),(friend4@example.com)}
e3 user1@example.com {(friend5@example.com)}
e4 user2@example.com {(friend2@example.com),(friend4@example.com)}
因此,每一行都是一封来自用户“from”到用户“to”的电子邮件。
我最终想要一份所有发件人和他们发送电子邮件给的所有人的列表,包括每个人发送的电子邮件数量,从高到低排序,例如:
user1@example.com {(friend1@example.com, 2), (friend2@example.com, 1), (friend3@example.com, 1), (friend4@example.com, 1), (friend5@example.com, 1)}
user2@example.com {(friend2@example.com, 1), (friend4@example.com, 1)}
最好的方法来解决Pig的想法将不胜感激!
1条答案
按热度按时间xuo3flqw1#
以下是脚本的一个版本:
希望有帮助。