在比較操作(==,!=,>,<,>=,<=),matches,算數(shù)操作(+,-,*,/ ,包含%,?,CASE)中,如果有一個(gè)操作數(shù)為空,那么結(jié)果為空,
PIG中的null問題
。COUNT_STAR ,不過濾null數(shù)據(jù)
CAST 操作:將一個(gè)null數(shù)據(jù)從一個(gè)數(shù)據(jù)類型轉(zhuǎn)換到另一個(gè)數(shù)據(jù)類型,結(jié)果為空
AVG,MIN,MAX,SUM,COUNT :這幾個(gè)操作將忽略空值
CONCAT :任意一個(gè)字表達(dá)式為空,結(jié)果為空
SIZE :任意計(jì)算的對(duì)象為null,結(jié)果也為null
tuple(.) or map(#):如果 被引用的對(duì)象為空,那么結(jié)果為空 。
FILTER 操作 :如果一個(gè)filter的表達(dá)式為空,filter將不會(huì)拒絕操作。(eg :b = filter a by X!=5 ,如果X為空,!X也為空,X!=5 將為空,那么filter將不會(huì)處理這一行數(shù)據(jù)。)
三元操作符 ? :如果一個(gè)bool表達(dá)式的結(jié)果為null,結(jié)果將為空。
以下操作會(huì)產(chǎn)生nulls : 1、除0 2、用戶的UDFs 3、引用一個(gè)不存在的字段 4、引用一個(gè)map中不存在的字段 5、引用一個(gè)tuple中不存在的字段 6、load不存在的數(shù)據(jù)時(shí)產(chǎn)生null,空字符串不會(huì)被load,會(huì)被替換成null null可以作為一個(gè)常量使用 。 7、load時(shí)數(shù)據(jù)類型不匹配產(chǎn)生null
GROUP /COGROUP/JOIN: 當(dāng)使用group來處理一個(gè)關(guān)系時(shí),一個(gè)關(guān)系中的null會(huì)被聚集在一起當(dāng)做一個(gè)null處理 ,
電腦資料
《PIG中的null問題》(http://www.oriental01.com)。 當(dāng)cogroup來處理多個(gè)關(guān)系是,如果有key為空的情況時(shí),多個(gè)關(guān)系之間的的空是不一樣的,會(huì)被分別當(dāng)做不同的null key來處理。JOIN :
數(shù)據(jù) : a : 1 5 43 6
b : 1 7
2 8
10
JOIN【inner】如:join中空和空是匹配不上的,會(huì)被過濾掉 。在join之前過濾出key為空的數(shù)據(jù) ,有助于提高join的速度。a = load './t1.txt' as (a1:int,a2:int); b = load './t2.txt' as (b1:int,b2:int); c= join a by a1,b by b1 ; dump c ; (1,5,1,7)
JOIN【outer】 d = join a by a1 left,b by b1 ; dump d ; (1,5,1,7)
(3,6,,)
(,4,,)
d = join a by a1 right,b by b1; dump d ; (1,5,1,7)
(,,2,8)
(,,,10)
d = join a by a1 full,b by b1; dump d ; (1,5,1,7)
(,,2,8)
(3,6,,)
(,4,,)
(,,,10)