PIG:使用条件
Posted
技术标签:
【中文标题】PIG:使用条件【英文标题】:PIG: using conditions 【发布时间】:2017-05-17 06:03:59 【问题描述】:我有以下电影数据库的数据集:
评级:用户 ID、电影 ID、评级 :: 电影:电影 ID、标题 :: 用户:用户 ID、性别、年龄
现在我加入了评级和用户。目标是通过性别 F 和 M 一起确定每个 movieID 评级。还包括至少有 20 个 F 和 M 评级的电影。
data = JOIN myuser BY user, myrating BY user;
grouped_users = GROUP data BY (movie,gender);
现在在 grouped_users 之后,我需要过滤掉两性评分少于 20 的电影。我该怎么做?
grouped_users_twenty = FILTER grouped_users BY SIZE(grouped_users)>=20;
这是我的逻辑。出现错误。
【问题讨论】:
【参考方案1】:您必须使用COUNT 而不是SIZE。
grouped_users_twenty = FOREACH grouped_users GENERATE group,COUNT(rating) as rating_count;
final = FILTER grouped_users_twenty BY rating_count >= 20;
【讨论】:
我选择了这个:grouped_user = GROUP data BY (movie,gender); grouped_users = FILTER grouped_user BY COUNT(data.rating)>=20;【参考方案2】:data = JOIN myuser BY user, myrating BY user;
grouped_users = foreach (GROUP data BY (movie,gender))
generate
group.movie,
group.gender,
SIZE(data) as user_size
;
;
grouped_users_twenty = FILTER grouped_users BY user_size>=20;
【讨论】:
感谢您提供此代码 sn-p,它可能会提供一些即时帮助。一个正确的解释would greatly improve 其教育价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有类似但不相同的问题的读者更有用。请edit您的答案添加解释,并说明适用的限制和假设。以上是关于PIG:使用条件的主要内容,如果未能解决你的问题,请参考以下文章
Apache Pig - 具有多个匹配条件的 MATCHES