【问题标题】:PIG Error : while reading the Attribute from a RelationPIG 错误:从关系中读取属性时
【发布时间】:2016-09-20 11:47:11
【问题描述】:

​嗨, 我正在使用下面的代码来执行订单操作,但它抛出了 Invalid field projection 的错误,因为关系有列。

grunt> byts = ORDER B BY JB_DLT::job_id DESC;

错误

2016-09-20 07:32:56,815 [主要] 错误 org.apache.pig.tools.grunt.Grunt - 错误 1025:无效的字段投影。架构中不存在投影字段 [JB_DLT::job_id]: group:tuple(JB_ASGNMNT::JB_DLT::job_id:bigdecimal,JOB_ASNMNT_STS_DLT::job_assignment_status_cd:chararray),a:bag{:tuple(JB_ASGNMNT::JB_DLT::job_id:bigdecimal,JOB_ASNMNT_STS_DLT::job_assignment_status_cd:chararray,JOB_ASNNT :bigdecimal,JOB_ASNMNT_STS_DLT::actual_status_dt:datetime)}。

grunt> describe B;

B: {组: (JB_ASGNMNT::JB_DLT::job_id: bigdecimal,JOB_ASNMNT_STS_DLT::job_assignment_status_cd: chararray),a: {(JB_ASGNMNT::JB_DLT::job_id: 大十进制,JOB_ASNMNT_STS_DLT::job_assignment_status_cd: 字符数组,JOB_ASNMNT_STS_DLT::job_assignment_status_id: bigdecimal,JOB_ASNMNT_STS_DLT::actual_status_dt: datetime)}}

如何在 ORDER BY 子句中读取此列数据。请分享您的想法..

【问题讨论】:

  • 使用“job_id”或“JB_ASGNMNT::JB_DLT::job_id”

标签: hadoop apache-pig hadoop2


【解决方案1】:

虽然 JB_DLT::job_id 存在但 Pig latin 无法找到(有 JB_ASGNMNT::JB_DLT::job_id),编辑语句 B 添加 JB_DLT::job_id 作为 job_id 。然后运行:

grunt> byts = ORDER B BY job_id DESC;

或者

byts = ORDER B BY JB_ASGNMNT::JB_DLT::job_id DESC;

【讨论】:

    【解决方案2】:

    您不能对分组数据进行 ORDER BY。使用 FOREACH 生成所需的数据,然后执行 ORDER BY。

    C = FOREACH B GENERATE FLATTEN(group) AS (job_id, job_assignment_status_cd), a;
    byts = ORDER C BY job_id DESC;
    

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2021-12-09
      • 1970-01-01
      相关资源
      最近更新 更多