共計 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 中的空值驗證就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
正文完