apache-pig - 在 Pig 中使用多个条件过滤列

标签 apache-pig

我需要编写一个 pig 脚本,在其中查找几列的平均值并仅获取所有列值都大于计算平均值的那些行。我的脚本是:

i2 = GROUP i1 all;
i3 = FOREACH i2 GENERATE AVG(i1.user_followers_count) AS avg_user_followers_count, AVG(i1.avl_user_follower_following_ratio) AS avg_avl_user_follower_following_ratio, AVG(i1.user_total_liked) AS avg_user_total_liked, AVG(i1.user_total_posts) AS avg_user_total_posts, AVG(i1.user_total_public_lists) AS avg_user_total_public_lists, AVG(i1.avl_user_total_retweets) AS avg_avl_user_total_retweets, AVG(i1.avl_user_total_likes) AS avl_user_total_likes, AVG(i1.avl_user_total_replies) AS avg_avl_user_total_replies, AVG(i1.avl_user_engagements) AS avl_avl_user_engagements, AVG(i1.user_reply_to_reply_count) AS avg_user_reply_to_reply_count;

top_inf = FILTER i1 BY (i1.user_followers_count > i3.avg_user_followers_count, i1.avl_user_total_retweets > i3. avg_avl_user_total_retweets, i1.avl_user_total_likes > i3.avg_avl_user_total_retweets);

但这会引发错误:
ERROR 1200: <file user.pig, line 70, column 103>  mismatched input '>' expecting RIGHT_PAREN

在多个条件下过滤行的正确方法是什么?

最佳答案

使用 AND 分隔条件

top_inf = FILTER i1 BY (i1.user_followers_count > i3.avg_user_followers_count) 
                   AND (i1.avl_user_total_retweets > i3.avg_avl_user_total_retweets) 
                   AND (i1.avl_user_total_likes > i3.avg_avl_user_total_retweets);

关于apache-pig - 在 Pig 中使用多个条件过滤列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40598443/

相关文章:

hadoop - 错误 org.apache.pig.tools.grunt.Grunt - 错误 2998 : Unhandled internal error. org/apache/hadoop/hbase/filter/WritableByteArrayComparable

hadoop - pig + hbase + hadoop2 集成

hadoop - 用oozie工作流文件元素的外部文件运行Pig UDF的等效方法

json - pig 。 JsonLoader。加载没有架构的嵌套对象

hadoop - 计数并压扁 pig

hadoop - 从表中创建 json

java - 异步 pig 作业提交

hadoop - 当您使用 Pig Latin 有许多小输入文件时提高性能

json - 带有嵌套Json的Hadoop PIG

hadoop - 错误2998:未处理的内部错误。 null-Apache Pig