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 如何避免空白值的主要内容,如果未能解决你的问题,请参考以下文章

PIG 中的 GROUP 和 COGROUP 有啥区别?

将 Parquet 数据加载到 PIG 时如何避免 UnsatisfiedLinkError

避免个别行在 Pig 中的 ToDate 中出现异常

PIG Group by 避免包

打印时如何避免最后出现多余的空白页?

如何避免带有缺口的设备上 UICollectionView 搜索栏下方的空白?