pig入门学习
来源:互联网 发布:linux修改服务器时间 编辑:程序博客网 时间:2024/06/03 08:41
个人目前理解pig是对mapreduce的一种封装扩展,使写mapreduce简单化,可维护性更高一点,可透明性更清晰一点,操作数据更简单一点吧。
1. Pig中的模式
pig中模式就是说pig数据的数据格式是什么样的。
比如当执行
grunt> describe a;
a: {c1: int,c2:int,c3: int}
这个时候就证明知道数据是什么模式的,
grunt> describe b;
Schema for bunknown.
这个时候的模式就是未知的,
在这儿我想就应该可以看到有模式和无模式的数据提示了。
Pig的模式是非常宽松的,就像它的宣言‘什么都吃’,用户定义了模式,pig会使用这个模式,可以进行预先错误检查,和执行过程的优化等操作。但是如果用户没有指定模式,pig会做最合理的猜测。
2. Pig数据结构
数据结构用来可以指定列的类型或者对象的类型
简单类型
描述
Example/声明实例
int
Signed 32-bit integer
10
as(c1:int)
long
Signed 64-bit integer
Data: 10L or 10l
as(c1: long)
Display: 10L
float
32-bit floating point
Data: 10.5F or 10.5f or 10.5e2f or 10.5E2F
as(c1: float)
Display: 10.5F or 1050.0F
double
64-bit floating point
Data: 10.5 or 10.5e2 or 10.5E2
as(c1: double)
Display: 10.5 or 1050.0
as(c1: double)
chararray
Character array (string) in Unicode UTF-8 format
hello world
as(c1: chararray)
bytearray
Byte array (blob)
as(c1: bytearray)默认
boolean
boolean
true/false (case insensitive)
datetime
datetime
1970-01-01T00:00:00.000+00:00
Complex Types复杂类型
tuple
An ordered set of fields.
(19,2)
as(a:tuple(),b:tuple(x:int,y:chararry))
bag
An collection of tuples.
{(19,2), (18,1)}
as(a:bag{},b:bag{x:int,y:chararray})
map
A set of key value pairs.
[open#apache]
as (a:map[],b:map[])
3. 数据类型转换
pig的数据类型的允许转换
from / to
bag
tuple
map
int
long
float
double
chararray
bytearray
boolean
bag
error
error
error
error
error
error
error
error
error
tuple
error
error
error
error
error
error
error
error
error
map
error
error
error
error
error
error
error
error
error
int
error
error
error
yes
yes
yes
yes
error
error
long
error
error
error
yes
yes
yes
yes
error
error
float
error
error
error
yes
yes
yes
yes
error
error
double
error
error
error
yes
yes
yes
yes
error
error
chararray
error
error
error
yes
yes
yes
yes
error
yes
bytearray
yes
Yes
yes
yes
yes
yes
yes
yes
yes
boolean
error
error
error
error
error
error
error
yes
error
参考:http://pig.apache.org/docs/r0.11.1/basic.html#cast
还有一些基础运算的操作在官方的参考手册中有好多的例子就不写了,原来写博文也很累~~~~(>_<)~~~~ ,现在感觉好羡慕那些一直坚持写了好多篇的NB人物们啊。
http://pig.apache.org/docs/r0.11.1/basic.html#artichmetic-ops
Pig latin
Pig latin 是一种数据流语言,每个处理步骤都会产生一个新的数据集,或者一个新的关系。
一个Piglatin程序是由一组语句组成,一个语句可以理解是一个操作,或一个命令等。
Pig latin中的变量是区分大小写的。比如所有的关系,和字段等都是区分的,但是pig中的保留字是不区分的。Load 和LOAD是一样的。
单行注释 --注释区
多行注释/*注释区*/
语句
在Pig Latin程序执行时,每个命令按次序进行解析。如果遇到句法错误或其他
(语义)错误,例如未定义的别名,解释器会终止运行,并显示错误消息。解释器会
给每个关系操作建立一个逻辑计划。逻辑计划构成了Pig Latin程序的核心。解释
器把为一个语句创建的逻辑计划加到到目前为止已经解析完的程序的逻辑计划上,
然后继续处理下一条语句。
特别需要注意的是,在整个程序逻辑计划没有构造完成前,Pig并不处理数据。
函数
Pig中的函数有四种类型。
计算函数(Eval function)
计算函数获取一个或多个表达式作为输入,并返回另一个表达式。MAX就是
一个内置表达式的例子,它返回一个包中项的最大值。有些计算函数是“聚集
函数”(aggregatefunction),这意味着它们作用于数据的“包”(bag),并产生
一个标量值(scalarvalue) o MAX就是一个聚集函数。此外,很多聚集函数是
“代数相关的”(algebraic)。也就是说这些函数的结果可以增量计算。在
MapReduce中,通过使用combiner进行计算,代数函数的计算效率可以提高
很多。MAX是一个代数函数,而计算一组值
“中位数”(median)的函数则不是代数函数。
过滤函数(Filter function)
过滤函数是一类特殊的计算函数。这类函数返回的是逻辑布尔值。正如其名,
过滤函数被FILTER操作用于移除不需要的行。它们也可以用于其他以布尔条
件作为输入的关系操作,或用于使用布尔或条件表达式的表达式。IsEmpty
就是内置过滤函数的一个例子。它测试一个包或映射是否包含有元素。
加载函数(Load function)
加载函数指明如何从外部存储加载数据到一个关系。
存储函数(Store function)
存储函数指明如何把一个关系中的内容存到外部存储。通常,加载和存储函数
由相同的类型实现。例如,PigStorage从分隔的文本文件中加载数据,也能
以相同的格式存储数据。
Pig内置的函数
类别
描述
计算
函数名称
描述
AVG
计算包中项的平均值
CONCAT
把两个字节数组或字符数组连接成一个
COUNT
计算一个包中非空值的项的个数
COUNTSTAR
计算一个包的项的个数,包括空值
DIFF
计算两个包的差。如果两个参数不是包,那么如果它们相同,则返回一个包含这两个参数的包;否则返回一个空的包
MAX
计算一个包中项的最大值
MIN
计算一个包中项的最小值
SIZE
计算一个类型的大小。数值型的大小总是1。对于字符数组,它返回字符的个数;对于字节数组,它返回字节的个数;对于容器(container,包括元组、包、映射)它返回其中项的个数
SUM
计算一个包中项的值的总和
TOKENIZE
对一个字符数组进行标记解析,并把结果词放入一个包
IsEmpty
判断一个包或映射是否为空
PigStorage
用字段分隔文本格式加载或存储关系。每一行被分为字段后(用一个可设置的分隔符(默认为一个制表符)分隔),分别对应于元组的各个字段。这是不指定加载/存储方式时的默认存储函数
BinStorage
从二进制文件加载一个关系或把关系存储到二进制文件
中。该函数使用基于Hadoop Writable对象的Pig内部格式
BinaryStorage
从二进制文件加载只包含一个类型为bytearray的字段的元组到关系,或以这种格式存储一个关系。bytearray中的字节逐字存放。该函数与Pig的流式处理结合使用
TextLoader
从纯文本格式加载一个关系。每一行对应于一个元组。每
个元组只包含一个字段,即该行文本。
PigDump
用元组的toString()形式存储关系。每行一个元组。这
个函数对设计很有帮助
HbaseStorage
从Hbase 加载数据
pig中的关键字
A-Z排序
保留字
A
AND, ANY, ALL, ARRANGE, AS, ASC, AVG
B
BAG, BINSTORAGE, BY, BYTEARRAY
C
CACHE, CAT, CD, CHARARRAY, COGROUP, CONCAT, COPYFROMLOCAL, COPYTOLOCAL, COUNT, CP, CROSS
D
DATETIME, %DECLARE, %DEFAULT, DEFINE, 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
QNOT, NULL
O
ONSCHEMA, OR, ORDER, OUTER, OUTPUT
P
PARALLEL, PIG, PIGDUMP, PIGSTORAGE, PWD
Q
QUIT
R
REGISTER, RIGHT, RM, RMF, 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
pig数据类型对应的java类
- pig入门学习
- Apache Pig入门学习文档(一)
- PIG入门
- pig入门
- pig学习
- Pig入门操作
- hello pig 入门
- Pig简单入门
- Pig学习总结
- pig学习教程
- Hadoop学习之Pig
- PIG学习资料
- pig命令学习
- pig学习笔记
- pig cookbook学习
- Pig语言的学习
- Pig学习笔记
- Pig学习之 UDF
- Ubuntu 12.04中文输入法的安装(转载)
- C#中数组做参数问题
- Android中长度单位的介绍
- jquery的对象一次写多个方法(四)
- struct nand_ecclayout 之解义 ,eccbytes,eccpos,eccfree
- pig入门学习
- dbcc使用简介
- 【数据结构】栈的应用 I :表达式求值
- 记录一次nginx+uwsgi服务器部署出现的502错误
- UITableView中行的操作
- chrome jsp 出现<code class="prettyprint">
- 模板类的小例子
- 要将程序集“xxx.dll”标记为系统必备组件,必须对其进行强签名
- char位数缩减