hadoop家族之pig入门
2016-01-26 20:41
323 查看
昨天成功运行第一个在hadoop集群上面的python版本的wordcount,今天白天继续看网上提供的文档。下午上头给定的回复是把hadoop家族都熟悉一下,那就恭敬不如从命,开始学习pig吧~
这一年多的编程之路让我知道学习任何一门新的技术的最入门的方式就看文档,let's geting started!
首先声明一下我的环境是在公司布置好的集群上面运行的程序,因此各位不愿意配置环境又木有条件的可以在cloudera提供的虚拟机配置的环境下跑程序。在进入公司的第一天就听说他们在用pig处理数据,说实在话当初我连hadoop有哪些成员都不知道,也是这两周各种google才知其皮毛,由前两天的烦躁慢慢安静下来,这也是程序员的乐趣吧,知足者常乐><
pig其实并不是什么高大上的东西,只是为了大大的简化mapreduce的一些繁琐的key,value处理而直接处理数据的一个类sql语言,如果你学过sql语句,那么学习pig将会顺手拈来。只不过,我在学习的过程中遇到一两个错误导致耽搁了那么一两个小时的学习效率因此记录下来,希望能给后来者一个warning~
类似于一般的sql语句,pig也有自己的一些operations,请看下图(图片来源于ibm)
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126194837457-1797053072.png)
你可以通过很多模式执行pig的latin语句以及命令,如下列表所示:
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126195341692-262039507.png)
我们主要分为交互式模式和命令行批量模式(个人理解),执行环境目前只接触了本地模式和mapreduce的集群模式。下面的知识都是介绍在集群下交互式和脚本跑pig这两种情况。
一、shell下进行交互式运行pig
在命令行直接输入pig就可以进入shell模式,关于这个shell下可执行的脚本参数可以help查询一下,接下来在运行pig的latin语句前你需要确保你的环境是正确的。参考:ibm中文社区文档
1、确保你此时的hadoop是连接的,已经启动了的:
在命令行下输入如下命令会返回hdfs系统下根目录的文件夹情况:
2、进入在命令行输入‘pig’进入mapreduce模式pig的grunt shell界面,然后在该界面下进入hdfs系统目录:
$ pig
grunt>cd hdfs:/// --进入根目录
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126201242926-853925215.png)
比如上图中,第一行命令显示的当前路径,第二行通过cd命令进入hdfs的根目录,当然接下来的运行环境都是在’/user/wuying/‘这个目录下运行一次我会把数据‘passwd’文件从本地的目录‘/etc/passwd’上传到hdfs系统下的‘/user/wuying/’路径下:
根据上图的passwd文件内容显示,该文件每一行格式类似,都是用‘:‘分割的数据,类似于sql中的数据属性,可以通过as关键字将该数据赋予不同的字段和类型,当然这里为了方便测试,进食将数据按照':'分割,下面是latin语句:
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126202927207-712246623.png)
若执行成功,id如上图所示输出。
二、批量模式下运行脚本*.pig文件
首先,在本地编辑myscript.pig脚本文件:
然后,将该脚本上传到hdfs文件系统下的’/user/wuying‘路径下,并运行该文件:
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126203645645-1770820257.png)
因为我的脚步是存放在test文件夹下的,因此你记得到时候把文件上传到用户目录就好了~若是报错,请查看log信息,找到你的error,all is well~
最后上一张成功执行的结果截图:
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126203958692-1446341565.png)
好冷,下班咯,回家~
最后贴上以下链接供参考:
Apache pig 官方文档
IBM中文社区文档
错误参考
这一年多的编程之路让我知道学习任何一门新的技术的最入门的方式就看文档,let's geting started!
首先声明一下我的环境是在公司布置好的集群上面运行的程序,因此各位不愿意配置环境又木有条件的可以在cloudera提供的虚拟机配置的环境下跑程序。在进入公司的第一天就听说他们在用pig处理数据,说实在话当初我连hadoop有哪些成员都不知道,也是这两周各种google才知其皮毛,由前两天的烦躁慢慢安静下来,这也是程序员的乐趣吧,知足者常乐><
pig其实并不是什么高大上的东西,只是为了大大的简化mapreduce的一些繁琐的key,value处理而直接处理数据的一个类sql语言,如果你学过sql语句,那么学习pig将会顺手拈来。只不过,我在学习的过程中遇到一两个错误导致耽搁了那么一两个小时的学习效率因此记录下来,希望能给后来者一个warning~
类似于一般的sql语句,pig也有自己的一些operations,请看下图(图片来源于ibm)
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126194837457-1797053072.png)
你可以通过很多模式执行pig的latin语句以及命令,如下列表所示:
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126195341692-262039507.png)
我们主要分为交互式模式和命令行批量模式(个人理解),执行环境目前只接触了本地模式和mapreduce的集群模式。下面的知识都是介绍在集群下交互式和脚本跑pig这两种情况。
一、shell下进行交互式运行pig
在命令行直接输入pig就可以进入shell模式,关于这个shell下可执行的脚本参数可以help查询一下,接下来在运行pig的latin语句前你需要确保你的环境是正确的。参考:ibm中文社区文档
1、确保你此时的hadoop是连接的,已经启动了的:
在命令行下输入如下命令会返回hdfs系统下根目录的文件夹情况:
$ hadoop dfs -ls /
2、进入在命令行输入‘pig’进入mapreduce模式pig的grunt shell界面,然后在该界面下进入hdfs系统目录:
$ pig
grunt>cd hdfs:/// --进入根目录
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126201242926-853925215.png)
比如上图中,第一行命令显示的当前路径,第二行通过cd命令进入hdfs的根目录,当然接下来的运行环境都是在’/user/wuying/‘这个目录下运行一次我会把数据‘passwd’文件从本地的目录‘/etc/passwd’上传到hdfs系统下的‘/user/wuying/’路径下:
grunt> copyFromLocal /etc/passwd passwd --从本地上传文件到hdfs上 grunt> ls --查看当前目录下是否存在passwd文件 grunt> cat passwd --查看passwd文件格式
根据上图的passwd文件内容显示,该文件每一行格式类似,都是用‘:‘分割的数据,类似于sql中的数据属性,可以通过as关键字将该数据赋予不同的字段和类型,当然这里为了方便测试,进食将数据按照':'分割,下面是latin语句:
grunt> A = load 'passwd' using PigStorage(':'); --加载passwd文件,并用冒号’:‘将数据分离为多个字段 grunt> B = foreach A generate $0 as id; --将每一次迭代的第一个元祖数据作为id grunt> dump B; 在命令行输出结果
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126202927207-712246623.png)
若执行成功,id如上图所示输出。
二、批量模式下运行脚本*.pig文件
首先,在本地编辑myscript.pig脚本文件:
/* script.pig */ A = load 'passwd' using PigStorage(':'); B = foreach A generate $0 as id; store B into ‘id.out’; -- 将结果写入到id.out文件
然后,将该脚本上传到hdfs文件系统下的’/user/wuying‘路径下,并运行该文件:
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126203645645-1770820257.png)
因为我的脚步是存放在test文件夹下的,因此你记得到时候把文件上传到用户目录就好了~若是报错,请查看log信息,找到你的error,all is well~
最后上一张成功执行的结果截图:
![](http://images2015.cnblogs.com/blog/752212/201601/752212-20160126203958692-1446341565.png)
好冷,下班咯,回家~
最后贴上以下链接供参考:
Apache pig 官方文档
IBM中文社区文档
错误参考
相关文章推荐
- Hadoop平台简述
- hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动
- Linux内核-系统调用
- Hadoop 之 Shuffle 和排序---再理解
- Gradient-based Hyperparameter Optimization through Reversible Learning
- CentOS7下安装配置vncserver
- 大型网站架构系列:消息队列(二) (转)
- Good Bye 2015 D. New Year and Ancient Prophecy
- 大型网站架构系列:分布式消息队列(一) (转)
- linux驱动开发(一)—GPIO驱动框架
- web的负载均衡 集群高可用(HA)解决方案
- 系统管理中 bash shell 脚本常用方法总结
- OPCode及汇编
- Linux下profile和bashrc四种的区别
- OpenCV3.1.0+VS2013开发环境配置之测试程序错误解决
- Runtime中property_getName与property_getAttributes
- docker 镜像的保存以及导入
- 阿里无线11.11 | 手机淘宝移动端接入网关基础架构演进之路
- docker 数据共享,数据复制
- 233,自定义NSOperation