hadoop - 在PIG中如何投影包中存在的歧义字段?

标签 hadoop amazon-web-services apache-pig emr

我有这样的事情:

  joined = JOIN A BY F1, B BY F1 ;
  joinOutput = FOREACH joined GENERATE A::f3 AS f3, A::f4 AS f4, B::f5 AS f5 ;
  grouped = GROUP joinOutput BY f3 ;
  countOutput = FOREACH grouped FLATTEN(joinOutput) , count(f5) as COUNT ;

如果我执行“”“DESCRIBE countOutput”“”,则会得到以下结果:
 countOutput = { joinOutput::f3 :chararray, joinOutput::f4 :int, COUNT :int }

现在,如果我尝试针对“countOutput”引用f3,即countOutput.f3,则会出现错误,指出无效的字段投影。

所以我的问题是我如何相对于countOutput投影字段f3。

如果这是正确的,我还没有尝试过,但是我可以考虑以下方法-
 countOutput.joinOutput::f3    

不知道这是否是正确的方法。

任何帮助表示赞赏。

最佳答案

好的,尝试了几件事之后找到了解决方案。我发现在FLATTEN时可以显式指定架构。

因此,可以将这一特定步骤重写如下:

 countOutput = FOREACH grouped FLATTEN(joinOutput) AS ( f3 :chararray, f4: int) , count(f5) as COUNT ;

现在,我可以直接引用关于外部关系的扁平字段。
希望如果有人遇到同样的问题,这会有所帮助。

关于hadoop - 在PIG中如何投影包中存在的歧义字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28578518/

相关文章:

amazon-web-services - 亚马逊 s3 对您创建的子文件夹数量有限制吗?

amazon-web-services - AWS Lambda 在一定时间后重试

apache-pig - 我如何阅读 Pig 中的行李 list ?

mongodb - 使用 Pig 从 Mongo 读取未命名的字符串数组

java - hdfs中的文件路径

hadoop - 如何有效地复制同一个文件系统中的文件

mysql - 创建 Hive 表 - 如何从 CSV 源中导出列名?

node.js - 如何通过 ec2 api 获取 InstanceID?

hadoop - 无法使用 Apache Pig 过滤数据

scala - 使用 Spark 选择特定列