猪:加入不同的字段名称

时间:2016-10-25 20:58:41

标签: json join apache-pig left-join

我有一组推文,我想计算用户使用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}

Whereeas我期待的是:

{"user_id":"9642792"..............."number_of_replies_to_user":1}

我不想要别名y1y5。我删除了一些不需要回答问题的不需要的字段,只是为了使它更具可读性。

我该怎么做?我的猪版本(0.15)不支持$0..

另外,有更好的方法来计算这个值吗? SQL看起来非常简单,但Pig确实令人困惑。

1 个答案:

答案 0 :(得分:0)

添加一个额外的步骤,从y5生成所需的字段,然后存储生成的y6关系

git tfs fetch