Pig的數據類型可以分爲兩種:一種是scalar類型,包含單一的value,一種是complex類型,包含有其餘的類型。html
對於scalar類型:python
int,long,float,double,chararray(取代了string),bytecharray.sql
複雜點的類型:ide
一、Map(我用python編寫的對應的map老是出現問題,糾結了很久仍是沒有糾結好~~~才糾結好)書上的介紹:map是chararray(做爲key)與其餘數據元素的映射關係(做爲value),其餘的數據元素的類型爲pig支持的數據類型,也包括複雜的數據類型。由於Pig並不知道value的類型,因此它假定這個爲bytearray類型,可是真是的類型可能不是這樣的,若是你知道這個value的類型,或者你但願是某個類型,你能夠強制轉換(cast)它。若是你不轉換,Pig會以它認爲的類型來定義,書的後面也有寫Pig如何處理它不知道的類型。默認的狀況下,沒有要求values的必須是同一種類型。Pig0.9以後,能夠申請values爲一種類型。spa
map的形式是:key,value之間由#隔開,每一對之間由逗號隔開,這些pairs由中括號括起來。scala
如:['name'#'bob', 'age'#55]。code
記下個人程序:htm
1 line = ''; 2 regulation = regulations.split(','); 3 regulation.remove(''); 4 for re in regulation: 5 line = line + re.replace(':', '#') + ','; 6 line = line[len(line) - 1:]; 7 regulationMap = [line];
這個程序裏面的regulationMap就能夠看成一個map來使用了。blog
其餘的:返回map,寫成這種形式:@outputSchema("mapvalue: []"),在pig裏面使用的時候用flatten。(後一個尚未仔細用。)rem
涉及到map的還有兩個問題:一、在pig,python的udf裏面能不能讀文件,每次讀文件,都出錯?二、flatten以後的數據跟別的數據join以後又問題。這個也尚未解決。
用describe看一個變量數據:describe variableValue,能夠知道其schema的組成。
注意:flatten以後的數據能夠用$0,$1等等來表明其第幾個schema。
map還有不少須要注意的地方,之後碰到再寫。
二、Tuple: 是有序集合,可以被分爲好幾個fields,每個field包含一個元素,這些元素能夠是任意類型,能夠不是相同的類型。能夠同爲下標進行訪問。tuple裏面的value能夠跟相應的type進行關聯。tuple形式:小括號,每一個元素之間逗號:('b', 55),兩個元素。
bag:
先不寫了。
sql:
http://www.cnblogs.com/wang-123/archive/2012/01/05/2312676.html