Pig:Cogroup如何避免空值

时间:2014-01-14 11:52:19

标签: apache-pig

我是猪的新手。 在做COGROUP我遇到了问题。 我想在两个文件上做COGROUP。我用于COGROUP的键具有空值。

以下是我的输入文件: Input_file_1:

a|b||
e|f||

Input_file_2:

a|b||
e|f||

我在执行COGROUP时使用所有四列作为键。 (最后两列是空白的)

我的预期输出是两个记录,但我得到四个记录作为输出。 在PIG中进行COGROUP时,任何人都可以帮助您避免如何避免空白值。

提前致谢。

1 个答案:

答案 0 :(得分:0)

PIG中处理的空值非常不同。

根据书籍Programming Pig的作者艾伦盖茨所说

  

cogroup处理键中的空值类似于group而不同   加入。也就是说,密钥中具有空值的所有记录将被收集在一起。

因此COGROUP的输出将是

((a,b,,),{(a,b,,)},{})
((a,b,,),{},{(a,b,,)})
((e,f,,),{(e,f,,)},{})
((e,f,,),{},{(e,f,,)})

在你的情况下,你必须去JOIN而不是COGROUP。从而为您提供以下结果

(a,b,,,a,b,,)
(e,f,,,e,f,,)

然后生成所需的值。