Apache pig Pig:多列的计数频率
我想计算pig中2个字段组合的频率:Apache pig Pig:多列的计数频率,apache-pig,Apache Pig,我想计算pig中2个字段组合的频率: ------ y1 has the fields ----- a1 = GROUP y1 BY (user_id, tweet_created_at); a2 = FOREACH a1 GENERATE group AS (user_id, tweet_created_at), COUNT(y1) AS number_of_replies_by_user; a3 = FOREACH a2 GENERATE user_id, tweet_created_at,
------ y1 has the fields -----
a1 = GROUP y1 BY (user_id, tweet_created_at);
a2 = FOREACH a1 GENERATE group AS (user_id, tweet_created_at), COUNT(y1) AS number_of_replies_by_user;
a3 = FOREACH a2 GENERATE user_id, tweet_created_at, number_of_replies_by_user;
a4 = JOIN y1 BY (user_id, tweet_created_at) LEFT OUTER, a3 BY (user_id, tweet_created_at);
在上面,我想计算(user\u id,tweet\u created\u at
)字段组合的频率
行a2=FOREACH a1生成组作为(用户id,tweet创建时),计数(y1)作为用户回复的数量
给出错误:不兼容模式:左侧为“用户id:NULL,tweet\u创建的位置:NULL”,右侧为“组:元组(用户id:bytearray,tweet\u创建的位置:bytearray)”
我尝试不使用括号:a2=FOREACH a1生成组作为用户id,tweet创建在,计数(y1)作为用户回复的数量代码>
我得到另一个错误:
Invalid field projection. Projected field [tweet_created_at] does not exist in schema:..................
这是语法错误还是我的数据有问题?
如果出现语法错误,正确的方法是什么
简而言之:我想计算用户在发布每条推特时的回复数量。(如果他在同一天发布了2条推文,他可能在第一条推文时回复10条,第二条推文时回复15条)。我想如果我不按tweet\u创建的分组,回复计数在任何时候都是一个常量,这是错误的。在组中使用将元组取消到字段中
a2 = FOREACH a1 GENERATE FLATTEN(group) AS (user_id, tweet_created_at), COUNT(y1) AS number_of_replies_by_user;
在组上使用将元组卸载到字段中
a2 = FOREACH a1 GENERATE FLATTEN(group) AS (user_id, tweet_created_at), COUNT(y1) AS number_of_replies_by_user;
工作。谢谢工作。谢谢