我是猪的新手。
在做COGROUP
我遇到了问题。
我想在两个文件上做COGROUP
。我用于COGROUP
的键具有空值。
以下是我的输入文件: Input_file_1:
a|b||
e|f||
Input_file_2:
a|b||
e|f||
我在执行COGROUP
时使用所有四列作为键。 (最后两列是空白的)
我的预期输出是两个记录,但我得到四个记录作为输出。
在PIG中进行COGROUP
时,任何人都可以帮助您避免如何避免空白值。
提前致谢。
答案 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,,)
然后生成所需的值。