第8周 Pig安装与Pig Latin语言,应用案例

pig 简介

Pig可以看做hadoop的客户端软件,可以连接到hadoop集群进行数据分析工作
Pig方便不熟悉java的用户,使用一种较为简便的类似于SQL的面向数据流的语言pig latin进行数据处理
Pig latin可以进行排序、过滤、求和、分组、关联等常用操作,还可以自定义函数,这是一种面向数据分析处理的轻量级脚本语言
Pig可以看做是pig latin到map-reduce的映射器

安装pig
下载并解压pig安装包( http://pig.apache.org/)
设置环境变量
进入grunt shell验证

Pig工作模式
本地模式:所有文件和执行过程都在本地,一般用于测试程序
Mapreduce模式:实际工作模式

[root@hadoop1 pig]# tar zxf pig-0.9.2.tar.gz
[root@hadoop1 pig]# cd pig-0.9.2/bin/
[root@hadoop1 bin]# ./pig -x local
which: no hadoop in (/usr/jdk1.7.0_09/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)
2014-01-14 05:07:52,637 [main] INFO org.apache.pig.Main - Logging error messages to: /nosql/pig/pig-0.9.2/bin/pig_1389694072631.log
2014-01-14 05:07:52,855 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:///
grunt> quit
[root@hadoop1 bin]# 

#配置pig的map-reduce模式
#JAVA_HOME要设置为JDK的上级目录,之前安装hadoop是配置过JAVA_HOME的,这里需要改一改。
#PATH里面一定要加hadoop的bin目录和pig的bin目录。
[root@hadoop1 ~]# vi .bash_profile 
export PATH=$PATH:/nosql/hadoop/hadoop-0.20.2/bin:/nosql/pig/pig-0.9.2/bin
export JAVA_HOME=/usr
export PIG_CLASSPATH=/nosql/hadoop/hadoop-0.20.2/conf

#设置完成后重新登录使环境变量生效
#在用pig连接之前需要先启动hadoop集群
[root@hadoop1 ~]# pig
2014-01-14 05:29:39,444 [main] INFO org.apache.pig.Main - Logging error messages to: /root/pig_1389695379442.log
2014-01-14 05:29:39,726 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://hadoop1:9000
2014-01-14 05:29:39,896 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: hadoop1:9001
grunt> quit
[root@hadoop1 ~]# 

Grunt shell命令

Pig的运行方法
脚本
Grunt
嵌入式

#ls、cd、cat
grunt> ls
hdfs://hadoop1:9000/user/root/in <dir>
hdfs://hadoop1:9000/user/root/out <dir>
hdfs://hadoop1:9000/user/root/test <dir>
grunt> cd out
grunt> ls
hdfs://hadoop1:9000/user/root/out/_logs <dir>
hdfs://hadoop1:9000/user/root/out/part-r-00000<r 2> 109
grunt> cat part-r-00000
10086 13599999999|13722222222|18966666666|
120 13599999999|18800000000|
13800138000 13999999999|13722222222|

#copyToLocal
grunt> copyToLocal part-r-00000 test.txt
grunt> sh ls
anaconda-ks.cfg
Desktop
install.log
install.log.syslog
pig_1389694520848.log
test.txt
grunt> sh cat test.txt
10086 13599999999|13722222222|18966666666|
120 13599999999|18800000000|
13800138000 13999999999|13722222222|

#执行操作系统命令:sh
grunt> sh rm -rf test.txt
grunt> sh date
Tue Jan 14 05:34:45 EST 2014

Pig latin

Pig数据模型
Bag:表
Tuple:行,记录
Field:属性
Pig不要求同一个bag里面的各个tuple有相同数量或相同类型的field

Pig latin常用语句
LOAD:指出载入数据的方法
FOREACH:逐行扫描进行某种处理
FILTER:过滤行
DUMP:把结果显示到屏幕
STORE:把结果保存到文件

#例子:
[root@hadoop1 tmp]# cat /tmp/csdn.txt
zq9017197#886520#zq9017197@sina.com
9017197#123456#9017197@qq.com
zhagnqu#666666#zhangqu@163.com

[root@hadoop1 tmp]# pig -x local
grunt> A = LOAD '/tmp/csdn.txt'
>> USING PigStorage('#')
>> AS (id,pw,em);

grunt> DUMP A
(zq9017197,886520,zq9017197@sina.com)
(9017197,123456,9017197@qq.com)
(zhagnqu,666666,zhangqu@163.com)

grunt> B = FOREACH A GENERATE em;
grunt> DUMP B;
(zq9017197@sina.com)
(9017197@qq.com)
(zhangqu@163.com)

grunt> STORE B INTO '/tmp/out.txt' USING PigStorage();
[root@hadoop1 out.txt]# cat /tmp/out.txt/part-m-00000
zq9017197@sina.com
9017197@qq.com
zhangqu@163.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值