【问题标题】:PIG error message: Projected field doesn't ePIG 错误消息:投影字段不
【发布时间】:2016-02-06 20:46:58
【问题描述】:

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

无效的场投影。架构中不存在投影字段 [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)}}

我相信我的问题是我不知道如何引用我想要计算平均值的字段,但是几天的搜索时间并没有启发我。

如果这是我的问题,谁能指出如何引用该字段?如果这不是我的问题,我会很感激你指出我正确的方向。

【问题讨论】:

    标签: join apache-pig projection


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多