Pig : Cogroup 如何避免空白值
Posted
技术标签:
【中文标题】Pig : Cogroup 如何避免空白值【英文标题】:Pig : Cogroup How to avoid Blank values 【发布时间】:2014-01-14 11:52:19 【问题描述】:我是猪新手。
在做COGROUP
时,我遇到了问题。
我正在尝试对两个文件执行COGROUP
。我用于 COGROUP
的键具有空值。
以下是我的输入文件: 输入文件_1:
a|b||
e|f||
输入文件_2:
a|b||
e|f||
在执行COGROUP
时,我使用所有四列作为键。 (最后两栏为空)
我的预期输出是两条记录,但我得到了四条记录作为输出。
在 PIG 中执行 COGROUP
时,任何人都可以帮助如何避免空白值。
提前致谢。
【问题讨论】:
你能分享一些代码吗? 【参考方案1】:空值在 PIG 中的处理方式非常不同。
正如艾伦·盖茨所说,《Programming Pig》一书的作者说
cogroup 处理键中的 null 值与 group 类似,但不同 加入。即所有key中值为null的记录都会被收集起来。
因此 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,,)
然后生成所需的值。
【讨论】:
以上是关于Pig : Cogroup 如何避免空白值的主要内容,如果未能解决你的问题,请参考以下文章