在 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 ;
现在我可以直接引用关于外部关系的展平字段。
如果有人遇到同样的问题,希望这会有所帮助。
我有这样的东西:
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 ;
现在我可以直接引用关于外部关系的展平字段。 如果有人遇到同样的问题,希望这会有所帮助。