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:使用条件的主要内容,如果未能解决你的问题,请参考以下文章

PIG 如何根据一个不相等的条件组合 2 个文件

Apache pig Store 基于条件

Apache Pig - 具有多个匹配条件的 MATCHES

如何在 Pig 中进行条件 JOIN?

如何在 PIG Script 中实现 IF ELSE 控制逻辑

大数据笔记(十八)——Pig的自定义函数