我有一组tweet,我想计算用户使用pig得到的回复数。
我的pig脚本如下所示(假设y1具有所需的json):
y2 = GROUP y1 BY in_reply_to_user_id_str;
y3 = FOREACH y2 GENERATE group AS in_reply_to_user_id_str, COUNT(y1) AS number_of_replies_to_user;
y4 = FOREACH y3 GENERATE in_reply_to_user_id_str, number_of_replies_to_user;
y5 = JOIN y1 BY user_id LEFT OUTER, y4 BY in_reply_to_user_id_str;
STORE y5 INTO '$DATA_OUTPUT' USING JsonStorage()
现在,我的输出看起来像:
{"y1::user_id":"9642792"............"y4::in_reply_to_user_id_str":"9642792","y4::number_of_replies_to_user":1}
我期待的是:
{"user_id":"9642792"..............."number_of_replies_to_user":1}
我不要别名 y1
以及 y5
. 我删除了一些不需要的字段,这些字段不是回答问题所必需的,只是为了使它更具可读性。
我该怎么做?我的pig版本(0.15)不支持 $0..
.
还有,有没有更好的方法来计算这个值?sql看起来很直截了当,但pig确实让人困惑。
1条答案
按热度按时间bvhaajcl1#
添加一个附加步骤,从y5生成所需的字段,然后存储生成的y6关系