in-pig如何在包中显示消除歧义的字段?

rkue9o1l  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(272)

我有这样的想法:

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 ;

如果我做了“descripe countoutput”,那么我会得到以下结果:

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

现在,如果我试图引用f3关于“countoutput”,即countoutput.f3,我得到的错误是无效的字段投影。
所以我的问题是,如何将字段f3投影到countoutput。
我还没有试过,如果这是正确的,但我可以想到以下方法-

countOutput.joinOutput::f3

但不确定这是否正确。
感谢您的帮助。

9ceoxa92

9ceoxa921#

好的,在尝试了一些东西之后找到了解决方法。我发现在展平时可以显式地指定模式。
因此,这一特定步骤可以重写如下:

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

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

相关问题