主要整理了一下,pig裏面的一些關鍵詞的含義和用法,pig雖然是一種以數據流處理爲核心的框架,但數據庫的大部分關鍵詞和操做,在pig裏面基本上都能找到對應的函數,很是靈活與簡潔,春節前的最後一篇文章了,祝你們春節快樂!
1,保留關鍵字:
-- A assert, and, any, all, arrange, as, asc, AVG
-- B bag, BinStorage, by, bytearray, BIGINTEGER, BIGDECIMAL
-- C cache, CASE, cat, cd, chararray, cogroup, CONCAT, copyFromLocal, copyToLocal, COUNT, cp, cross
-- D datetime, %declare, %default, define, dense, desc, describe, DIFF, distinct, double, du, dump
-- E e, E, eval, exec, explain
-- F f, F, filter, flatten, float, foreach, full
-- G generate, group
-- H help
-- I if, illustrate, import, inner, input, int, into, is
-- J join
-- K kill
-- L l, L, left, limit, load, long, ls
-- M map, matches, MAX, MIN, mkdir, mv
-- N not, null
-- O onschema, or, order, outer, output
-- P parallel, pig, PigDump, PigStorage, pwd
-- Q quit
-- R register, returns, right, rm, rmf, rollup, run
-- S sample, set, ship, SIZE, split, stderr, stdin, stdout, store, stream, SUM
-- T TextLoader, TOKENIZE, through, tuple
-- U union, using
-- V, W, X, Y, Z Void
2,大小寫敏感,別名大小寫敏感,關鍵字大小寫均可以 例如,load,group,foreach與LOAD,GROUP,FOREACH是等價的
3,別名定義(首位字符必須爲字母,其餘位置能夠是字母,數字,下劃線)
4,集合類型
Bags ,相似table,能夠包含多個row
Tuples,相似一行行row,能夠有多個field
Fields,具體的數據
5,列名引用,在關係數據庫中咱們可使用列名來定位到某一行數據的某個字段的值,在JDBC中,咱們既能夠經過列名引用,也能夠經過索引下標引用,在pig裏,也支持這兩種引用,下標引用須要加上$0,$1這樣的數字標識。
6,數據類型
(基本類型)
Int:有符號32位整數
Long:有符號64位整數
Float:32位單精度
Double:64位單精度
Chararray:Java裏面的字符串類型,必須是UTF-8編碼
Bytearray:blob字節類型
Boolean:布爾類型
Datetime:日期類型
Biginteger:Java Bigingteger
Bigdecimal:Java BigDecimal
(集合類型)
Tuple:一個有序的字段值集合,相似Java裏面的List
Bag:Tuple的集合,相似Java裏面的Collection集合超級接口
Map:Java裏面的Map,K和V,直接使用#號分開,引用時須要加上#號
7,運算符:
(1) 比較運算符==,!=,<,>,>=,<=
(2) 比較運算符matches,適合字符串,支持正則
(3) 算術運算符+,-,*,/,%,?:,CASE
(4) Null運算符is not null ,is null
(5) 集合類型引用符號tuple(.),map(#)
(6) 關係運算符cogroup,group,join
(7) 函數count_star,sum,min,max,count,avg,concat,size
8, 多數據源join時,別名區分,使用A::name,B::name
9, fallten能夠將一個集合類型,或嵌套的類型,給扁平化成一行,看下面例子
B={(a,b,c),(b,b,c)}
FLATTEN(B)以後
a,b,c,b,b,c就成爲一行數據了
10,cogroup,多表分組使用
11,cross,兩個數據源連接,會產生笛卡爾集
12,distinct,去重,與關係型數據庫不一樣的是,不能對單個field去重,必須是一個row,若是你想對單filed去重,那麼就須要先把這個filed,單獨提取出來,而後在distinct
13,filter,過濾,相似數據庫的where條件,返回一個boolean值。
14,foreach,迭代,抽取一列,或幾列的數據,
15,group,分組,相似數據庫的group
16,partition by,同等hadoop中Partition組件
17,join,份內外鏈接,與關係型數據庫相似,在hadoop中又分不一樣的鏈接方式:複製鏈接,合併鏈接,skewed鏈接等
18,limit,限制結果集返回行數,與mysql中的limit關鍵字相似
19,load,pig特有關鍵詞,負責從一個指定的路徑加載數據源,路徑可使用通配符與hadoop的路徑通配符保持一致
20,mapreduce,在pig中,以MR的方式執行一個jar包
21,order by 與關係型數據庫的order相似
22,rank,給一個集合,生成序號,相似for循環時的索引自增
23,sample,採樣器,能從指定的數據集中隨機抽取指定的記錄數
24,split,能夠按條件拆分一個大的數據集,生成幾個不一樣的小數據集
25,store,pig裏面的存儲結果的函數,能夠將一個集合以指定的存儲方式,存儲到指定的地方
26,stream,提供了以流的方式能夠在pig腳本中,與其餘的編程語言交互,好比將pig處理的中間結果,傳給python,perl,或者shell等等
27,union,相似數據的union,合併兩個結果集爲一個結果集
28,register,UDF中,使用此關鍵詞註冊咱們的組件,多是一個jar包,也多是一個python文件
29,define,給UDF的引用定義一個別名
30,import,在一個pig腳本中,使用imprt關鍵詞引入另一個pig腳本 python