在PIG中,如何投影袋子中存在的模糊字段



我有这样的东西:

  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 ;

如果我做""描述countOutput"",那么我得到以下内容:

 countOutput = { joinOutput::f3 :chararray, joinOutput::f4 :int, COUNT :int }

现在,如果我试图引用f3关于"countOutput",即countOutput.f3,我会得到一个错误,说无效的字段投影。

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

我还没有尝试过,如果这是正确的,但我可以想出以下方法-

 countOutput.joinOutput::f3    

但不确定这是否是正确的方式。

感谢您的帮助。

ok,在尝试了一些事情后找到了解决方案。我发现在FLATTEN时可以显式指定模式。

因此,这个特定的步骤可以重写如下:

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

现在,我可以直接参考关于外部关系的平坦场。如果有人遇到同样的问题,希望这能有所帮助。

最新更新