这篇文章将为大家详细讲解有关怎样实现PIG中COGROUP中的空值验证,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
环境: 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)
CB:
(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)
CB:
(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中的空值验证就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/wangjiankui/blog/263072