pig latin學習

一、pig -x local  /  pig -x mapreducehtml

二、sh 選項從Grunt shell中調用Linux shell的 ls 命令,fs選項調用HDFS的ls命令。java

三、pig latin中語句是基本結構,語句使用關係,包括表達式模式。 只有在執行dump後,才執行將數據加載到文件系統的MapReduce做業。shell

四、pig latin基礎類型 chararray : unicode中UTF-8格式     安全

ASCII佔用一個字節(第一位爲0,後續可表示128個字符);Unicode是符號集,好比‘嚴’的unicode是十六進制數4E25,佔2個字節;ide

UTF-8特色是可變長的編碼,1~4字節可根據需求變化 函數

五、編碼

運算符 描述 示例
()

元組構造函數運算符 - 此運算符用於構建元組。spa

(Raju,30)
{}

包構造函數運算符 - 此運算符用於構造包。code

{(Raju,30),(Mohammad,45)}
[]

映射構造函數運算符 - 此運算符用於構造一個映射。htm

[name#Raja,age#30]

六、要使用Apache Pig分析數據,咱們必須首先將數據從HDFS加載到Apache Pig中。

七、

數據類型:基本類型,複雜類型。
基本類型:int,long,float,double,char array(string:注意以單引號),bytearray(byte[])
複雜類型:map,type,bag(能夠任意嵌套)
 
map:key 是char array ;value 能夠任意類型。
[’name’#’bob’,’age’#55]:建立一個包含 name 和 age 兩個鍵的map。
tuple:是一個定長,無須相同類型。
(’bob’,55):建立一個包含兩個字段的tuple 常量。
bag:是一個無序的tuple集合。無須加載到內存中的數據類型。
{(‘bob’,55),(’sally’,52),(‘john,25’)}:構造了一個包含的3個 tuple 的 bag,每一個tuple 包含兩個字段。
 
模式
一些經常使用的模式(數據以Json格式存儲)已經放在HCatalog 中。
mdata = load ‘mydata’ using HCatLoader();
 
在加載數據時,沒有告訴Pig 數據的模式,能夠$0 表示第一列。
daily = load ’NYSE_daily’;
calcs = foreach daily generate $7 /1000 , $3 * 100.0 , SUBSTRING($0,0,1) , $6 - $3
注意:因爲1000 是個整型,因此$7 會轉換成整型。100.0 是個double,$3會自動轉換成 double。$0 會推斷爲chararray。$3,$6 會推斷爲double ,由於這樣更安全。
 
fltrd = filter daily by $6 > $3;
因爲數值型,chararray 和 bytearray 都適合,因此pig 推斷不出來,那麼pig 都做爲bytearray 處理,對這些字段內的數據進行一個字節一個字節的比較。
 
沒有模式是具備感染性
divs = load ’NYSE_dividends’ as ( exchange,stock_symbol,date,dividends );
daily = load ’NYSE_daily’;
jnd = join divs by stock_symbol ,daily by $1;
這個例子中pig 並不知道 daily 的模式,因此他不知道在join 中divs 和 daily 的模式。
類型轉換
與java語法同樣,(int)值
unintended = foreach player generate (int)bat#’base_on_balls’ - (int)bat#’ibbs’;
全部類型都不容許轉換爲bytearray。轉爲複雜類型或者複雜類型轉爲其餘類型目前也是不容許的。
能夠從bytearray 轉換爲複雜類型。
daily = load ’NYSE_daily’ as (exchange:char array,symbol:chararray,volume:int,close:float )
rough = foreach daily generate volume * close;
pig 隱式轉換時,會向範圍更大的類型轉。
int 和 long 一塊兒會轉long。int,long 和 float 一塊兒會轉 float。int、long、float 和double 一塊兒會轉double、
相關文章
相關標籤/搜索