2014-08-05 pig

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];    
View Code

這個程序裏面的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

相關文章
相關標籤/搜索