PIG错误消息:投影字段没有

时间:2016-02-06 20:46:58

标签: join apache-pig projection

我参加了一个在线课程。我当前的作业要求我计算其中一个字段的平均值。 当我使用单个关系时,我得到了这个工作,但是当前任务涉及通过加入另外两个关系来创建关系中的值。 当我尝试基于以前成功的方法的函数时,我得到这个错误消息让我感到困惑。

无效的字段投影。架构中不存在预计字段[join2 :: Y_rate2 :: wtd_stars]:

我在PIG shell中输入的代码是:

avg = FOREACH groupedJoin2 GENERATE AVG(join2::Y_rate2::wtd_stars);

当我进入

grunt> describe groupedJoin2

这是我的输出:

  

groupedJoin2:{group:chararray,join2:{(Y_rate2 :: business_id:chararray,Y_rate2 :: stars:int,Y_rate2 :: useful_clipped:int,Y_rate2 :: wtd_stars:double,Y_m2 :: business_idgroup:chararray,Y_m2 :: num_ratings:long,Y_m2 :: avg_stars:double,Y_m2 :: avg_useful:double,Y_m2 :: avg_wtdstars:double)}}

我认为我的问题是我不知道如何引用我想要计算平均值的字段,但是几天的搜索时间并没有让我感到满意。

任何人都可以指出如何引用该字段,如果这是我的问题?如果这不是我的问题,我会感激你指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

我想你想说:AVG(join2.Y_rate2::wtd_stars)

Dot用于取消引用包或元组(在本例中为join2包)。 在连接或组之后使用冒号来消除字段名称的歧义。

  

行取消引用可以通过名称(bag.field_name)或位置(行李。$ 0)来完成。如果取消引用一组字段(bag。(name1,name2)或bag。($ 0,$ 1)),则表达式表示由指定字段组成的包。   http://pig.apache.org/docs/r0.15.0/basic.html#deref