pig:cogroup如何避免空值

z31licg0  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(293)

我对Pig不熟悉。在做一个 COGROUP 我遇到了这个问题。我想做一个 COGROUP 在两个文件上。我用的钥匙 COGROUP 具有空值的。
以下是我的输入文件:输入文件1:

a|b||
e|f||

输入文件\u 2:

a|b||
e|f||

我使用所有的四列作为一个键,同时做一个 COGROUP . (最后两列为空)
我的预期输出是两个记录,但我得到四个记录作为一个输出。有谁能帮助我们在做一个测试时避免空白值吗 COGROUP 在Pig身上。
提前谢谢。

ergxz8rk

ergxz8rk1#

空值在pig中的处理方式非常不同。
正如《编程Pig》一书的作者艾伦·盖茨所说
cogroup处理键中的空值与group类似,与join不同。也就是说,键中具有空值的所有记录将一起收集。
因此,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,,)

然后生成所需的值。

相关问题