PIG 错误:从关系中读取属性时
Posted
技术标签:
【中文标题】PIG 错误:从关系中读取属性时【英文标题】:PIG Error : while reading the Attribute from a Relation 【发布时间】: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” 【参考方案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;
【讨论】:
以上是关于PIG 错误:从关系中读取属性时的主要内容,如果未能解决你的问题,请参考以下文章