Pig

Pig可以看做hadoop的客户端软件, 可以连接到hadoop集群进行数据分析工作

Pig方便不熟悉java的用户, 使用一种较为简便的类似于SQL的面向数据流的语言pig latin进行数据处理

Pig latin可以进行排序, 过滤, 求和, 分组, 关联等常用操作, 还可以自定义函数, 这是一种面向数据分析处理的轻量级脚本语言

Pig可以看作是pig latin到map-reduce的映射器

 

 

下载并解压pig安装包

http://mirror.bjtu.edu.cn/apache/pig/pig-0.13.0/

wget http://mirror.bjtu.edu.cn/apache/pig/pig-0.13.0/pig-0.13.0.tar.gz
tar xf pig-0.13.0.tar.gz

.bash_profile

PATH=$PATH:/home/hadoop/pig-0.13.0/bin:$HOME/bin:/home/hadoop/hadoop-2.5.0/bin/
JAVA_HOME=/usr/java/jdk1.7.0_67/
PIG_CLASSPATH=/home/hadoop/etc/hadoop/            #指向hadoop配置文件,让pig可以找到要连接的集群
export PATH
export JAVA_HOME

 

 

进入grunt shell

pig -x local
pig

 

 

参考文档

http://pig.apache.org/docs/r0.13.0/

 

 

Pig的运行方法

脚本

Grunt

嵌入式

 

Grunt

自动补全机制

Autocomplete文件

Eclipse插件PigPen

 

 常用命令

copyToLocal  hadoopfile   filename  将hadoop中的文件,copy到本地

 

Pig数据模型

Bag: 表

Tuple: 行, 记录

Field: 属性

Pig不要求同一个bag里面的各个Tupler有相同数量或相同的类型的field

 

Pig latin常用语句

LOAD: 指出载入数据的方法

FOREACH: 逐行扫描进行某种处理

FILTER: 过滤行

DUMP: 把结果显示到屏幕

STORE: 把结果显示到文件

 

pix -x local

A = LOAD = '/home/hadoop/aa.txt'
USING PigStorage('#')                      #使用#作为分隔符
AS (id,pw,em);                             #分为三个列
B = FOREACH a                              #循环A,取出em的列
  GENERATE em;
STORE B INFO '/home/hadoop/email.txt'      #存储这个关系到硬盘中
USING PigStorate();

 

UDF

支持使用JAVA, python, javascript三种语言编写UDF

JAVA自定义函数较为成熟, 其他两种功能还有限