在执行看起来像是两个级别的分组时,我有一个关于 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)}
因此,每一行都是从用户“发件人”到用户“发件人”的电子邮件。
我最终想要一个所有发件人和他们发送电子邮件的所有人的列表,包括为每个人发送的电子邮件数量,从高到低排序,例如:
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 中解决此问题的最佳方法的想法!