您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎樣實現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中的空值驗證就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。