在 PIG 中,如何投射包中存在的消歧字段?

In PIG how to project disambiguited field present in bag?

我有这样的东西:

  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 ;

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