怎样实现PIG中COGROUP中的空值验证

78次阅读
没有评论

共计 1717 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章将为大家详细讲解有关怎样实现 PIG 中 COGROUP 中的空值验证,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

环境:0.10.0

  COGROUP : 2+ 个关系中做分组  

最近做一个 PIG 类的项目,重新看了下 PIG,顺便做总结。看到 COGROUP 时感觉有些问题

官方:http://pig.apache.org/docs/r0.8.1/piglatin_ref2.html  

 

A = load  student  as (name:chararray, age:int, gpa:float);
B = load  student  as (name:chararray, age:int, gpa:float);
dump B;
(joe,18,2.5)
(sam,,3.0)
(bob,,3.5)
X = cogroup A by age, B by age;
dump X;
(18,{(joe,18,2.5)},{(joe,18,2.5)})
(,{(sam,,3.0),(bob,,3.5)},{})
(,{},{(sam,,3.0),(bob,,3.5)})

 
很难理解的是为什么 age 是空的会有 2 条数据?参考其他博客看下 COGROUP 的用法,发现不是这样。

编码无悔博客:http://www.codelast.com/?p=3621

后来自己造了一批数据来尝试没有空值和有空值的 COGROUP.

CA:
 (jack,32,run)
 (liza,22,eat)
 (tom,20,mouse)
 (jack,32,run)
 (jerry,10,steal)
 (tom,20,mouse)
COGROUP:
 (tom,{(tom,20,mouse)},{(tom,20,mouse)})
 (jack,{(jack,32,run)},{(jack,32,run)})
 (liza,{(liza,22,eat)},{})
 (jerry,{},{(jerry,10,steal)})

加一个有空值的字段。

 CA:
 (jack,32,run)
 (liza,22,eat)
 (,20,mouse)
 (jack,32,run)
 (jerry,10,steal)
 (,20,mouse)
 
COGROUP: (jack,{(jack,32,run)},{(jack,32,run)})
 (liza,{(liza,22,eat)},{})
 (jerry,{},{(jerry,10,steal)})
 (,{(,20,mouse)},{})
 (,{},{(,20,mouse)})

分别加 M 和 N 个空值字段,数据量不会出现 M * N 个空值吧?不是 2 个就是个大坑,会放大数据量。

CA:
 (jack,32,run)
 (liza,22,eat)
 (,200,mouse)
 (,201,mouse)
 (,202,mouse)
 (,203,mouse)
 (,204,mouse)
 
 CB: (jack,32,run)
 (jerry,10,steal)
 (,301,mouse)
 (,302,mouse)
 (,303,mouse)
 (,304,mouse)
 (,305,mouse)
 (,306,mouse)
 (,307,mouse)
COGROUP: (jack,{(jack,32,run)},{(jack,32,run)})
 (liza,{(liza,22,eat)},{})
 (jerry,{},{(jerry,10,steal)})
 (,{(,200,mouse),(,201,mouse),(,202,mouse),(,203,mouse),(,204,mouse)},{})
 (,{},{(,301,mouse),(,302,mouse),(,303,mouse),(,304,mouse),(,305,mouse),(,306,mouse),(,307,mouse)})

关于怎样实现 PIG 中 COGROUP 中的空值验证就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计1717字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)