Pig安装及本地模式测试,体验

原创 2013年12月05日 12:16:09

Pig是Apache的一个开源项目,用于简化MapReduce的开发。研究了一段时间,略有心得。系废话不多说,我们直接步入实际测试。

 Pig的运行有两种模式,本地单击模式和集群模式。我目前只是测试学习,是为了检验Pig的运行流程以及学习语法,没必要使用分布式模式,分布式模式下也都是大同小异的。 

我的环境: 

   1. 系统: Ubuntu 12.04 64位 

   2. JDK:Oracle JDK1.7.0_15 

   3. Pig:0.9.2 

和Apache其他项目一样,安装Pig都很简单,解压到系统任意目录,设置环境变量就能使用。

1 export PIG_HOME=path
2 export PATH=$PATH:$PIG_HOME/bin

设置环境变量后注销后登录或者打开终端输入:source /etc/profile 使新加入的环境变量生效 最后在终端中输入:pig -version,正常应该出现如下字样

1 Warning: $HADOOP_HOME is deprecated.
2  
3 Apache Pig version 0.9.2 (r1232772)
4 compiled Jan 18 2012, 07:57:19
到这里Pig的安装算是成功了。(当然如果不成功检查你的JDK安装及环境变量是否正确) 现在你可以输入:

1 pig -x local
进入一个外壳程序。


学习Hadoop一般的入门都是Oreilly的《《Hadoop权威指南》》中文版,其中测试MapReduce的第一个程序就是统计一个文本文件中单词出现的次数。Pig是为了简化MapReduce开发的,肯定也是能实现这个的。我以这个为例,写一个测试的例子。 

我准备了一个文件,文件名为:nie.txt 里边是一片普通的英文文章,比较长,大约52KB。 

我在自己的home下建立了一个workspace的文件夹,我是把它当作开始目录的。(为什么说这个?因为Pig Load数据的时候相对路径的起始文件路径很重要,搞错了就会出现文件找不到的错误。我开始就犯了这个错误) 

nie.txt文件的路径为: ~/workspace/nie.txt 而我进入Pig外壳程序的起始路径是:~/workspace/ 下面是我的Pig脚本:

1 words = load 'nie.txt' using PigStorage(' ') as (line); --以空格作为分隔符把内容分词读入
2 grpd = group words by line;     --以每个单词聚类,真实的是一个MapReduce的Map阶段
3 cntd = foreach grpd generate group, COUNT(words); -- 这里既上一步Map完成紧接着Reduce阶段进行统计
4 dump cntd;  --直接在终端打印结果便于查看
把它保存到workspace命名为test1.txt。我们直接运行

1 pig -x local test1.pig
大约10多秒中经过大量的输出,最终会得到结果。

01 (So,1)
02 (We,1)
03 (as,7)
04 (at,1)
05 (be,3)
06 (he,2)
07 (if,1)
08 (in,12)
09 (is,10)
10 (it,9)
11 (no,2)
12 (of,21)
13 (on,3)
14 (or,1)
15 (so,1)
16 (to,11)
17 (us,2)
18 (we,1)
前面是单词,后面是计数。当然我的结果很长,已经冲出终端了。

OK,我们的第一个例子已经完美的运行了。下面我解释一下代码。

如上所见,Pig也支持注释的,他的注释方式有2中,

一种是SQL的注释方式,如上面的--, --行后边的内容都会忽略

另一种是Java中的注释方式, /* 注释内容 */ ,它的注释可以一行也可以跨行(Java的程序员是不是很友好?)。

另外Pig Latin[忘了介绍了,Pig的脚本有专业的名字,叫Pig Latin,不知道神码意思]也是用;[分号]换行的,一条语句可以写在一行也可以多行。Pig在运行前会检查Pig Latin,并且对Pig Latin进行编译,用以确定程序逻辑和分析MapReduce。

如果程序有简单逻辑错误,运行前都不会编译通过。如我写的时候把group words by line中的line意识的写成了word,运行时出现了:

1 2013-04-13 22:21:12,619 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/zhenqin/workspace/pig_1365862872616.log
2 2013-04-13 22:21:12,713 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:///
3 2013-04-13 22:21:13,225 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1025:
4  Invalid field projection. Projected field [word] does not exist in schema: line:bytearray.
5 Details at logfile: /home/zhenqin/workspace/pig_1365862872616.log
提示没有定义word, 错误是不是也很友好? 哈哈。。。

下面我解释一下我出现过的问题。我在起初测试时进入Pig时不是从workspace进入的,我是从pighome,以bin/pig运行的,而我的统计文件存储在 ~/workspace/下,尽管我在Pig Latin脚本中使用了 load ‘/home/zhenqin/workspace/’或者 load ‘file:///home/zhenqin/workspace/’ 都报错,无法找到文件。为此我纠结了很长时间。

原来Pig的外壳程序Grunt也是有当前路径的。因此可以使用cd 跳转当前路径。

如我从pighome下进入Grunt,执行ls命令出现如下:

01 grunt> ls
02 file:/opt/pig-0.9.2/testfile:/opt/pig-0.9.2/tutorialfile:/opt/pig-0.9.2/libfile:/opt/pig-0.9.2/ivyfile:/opt/pig-0.9.2/CHANGES.txt87506
03 file:/opt/pig-0.9.2/RELEASE_NOTES.txt2224
04 file:/opt/pig-0.9.2/LICENSE.txt11358
05 file:/opt/pig-0.9.2/conffile:/opt/pig-0.9.2/licensefile:/opt/pig-0.9.2/NOTICE.txt2120
06 file:/opt/pig-0.9.2/binfile:/opt/pig-0.9.2/build.xml77427
07 file:/opt/pig-0.9.2/pig-0.9.2.jar17585882
08 file:/opt/pig-0.9.2/README.txt1307
09 file:/opt/pig-0.9.2/ivy.xml13509
10 file:/opt/pig-0.9.2/scriptsfile:/opt/pig-0.9.2/pig-0.9.2-withouthadoop.jar6018058
当然上面的ls cd等命令都类似Linux的命名,如:chmod,chown,cp,mkdir,mv,cat,rm[相当于rm -R ]等。

它同时也支持Hadoop的一些命名,如: 

1 copyFromLocal localfile hdfsfile
2 copyToLocal   hdfsfile  localfile
在Pig 0.8以上的版本,输入sh 后跟命令, 还可以支持原生的Linux命令,如:

1 grunt> sh ls -l
2 总用量 6
3 -rw------- 1 zhenqin zhenqin 52220  2月  3  2012 nie.txt
4 -rw-rw-r-- 1 zhenqin zhenqin  2896  4月 13 22:03 pig_1365861790591.log
5 -rw-rw-r-- 1 zhenqin zhenqin  2896  4月 13 22:21 pig_1365862872616.log
6 -rw-rw-r-- 1 zhenqin zhenqin   443  4月 13 22:21 test1.pig
7 -rw-rw-r-- 1 zhenqin zhenqin   210  4月 12 21:35 test2.pig
8 -rw-rw-r-- 1 zhenqin zhenqin   245  4月 12 22:40 test3.pig
今天的测试写到这里,后边的部分会陆续跟大家分享
版权声明:本文为博主原创文章,未经博主允许不得转载。

spark 环境搭建及几种模式测试

spark安装部署标签(空格分隔): sparkhadoop,spark,kafka交流群:224209501, spark on yarn;spark standalone;spark hadoo...
  • u011308691
  • u011308691
  • 2016年05月19日 11:58
  • 9226

pig的各种运行模式与运行方式详解

pig的各种运行模式与运行方式详解 一、pig的运行模式:     Pig 有两种运行模式: Local 模式和 MapReduce 模式。当 Pig 在 Local 模式运行的时候, Pig 将只...
  • u012875880
  • u012875880
  • 2013年11月19日 11:02
  • 3630

REDIS教程{1}windows 下安装redis并测试(-)

1、redis简介 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(...
  • wangyonglin1123
  • wangyonglin1123
  • 2015年03月26日 23:04
  • 4634

在ubuntu下安装并测试pig以及常见的问题

1 安装  只安装在namenode节点上即可  1.1 下载并解压  下载:http://pig.apache.org/releases.html下载pig-0.12.1版本的pig-0.12...
  • a925907195
  • a925907195
  • 2015年01月01日 22:59
  • 1930

Pig安装测试和出现的问题

Pig的安装和配置过程 1、从http://pig.apache.org/下载Pig安装包,我下载的是Pig-0.14.0 2、使用tar -zxvf pig-0.14.0.tar.gz解压到适当的位...
  • iwantknowwhat
  • iwantknowwhat
  • 2015年05月03日 21:08
  • 340

Hadoop生态系统搭建(2)——数据分析脚本 Pig 的安装部署与测试

1. 系统环境Ubuntu 16.04 vmware Hadoop 2.7.0 Java 1.8.0_111master:192.168.19.128 slave1:192.168.19.12...
  • Mark_LQ
  • Mark_LQ
  • 2017年04月12日 16:46
  • 658

pig实验本地模式

pig本地模式实验
  • fumier
  • fumier
  • 2015年01月04日 20:44
  • 777

Pig执行模式

Pig有两种执行模式:local mode 和 MR mode         Pig的物理计划是一系列的MR作业,在local mode,作业在本地JVM中运行,在MR mode,作业在Hadoo...
  • caiandyong
  • caiandyong
  • 2015年03月07日 18:13
  • 397

hadoop之pig安装及简单实例(四)

hadoop pig
  • sureSand
  • sureSand
  • 2018年01月06日 23:12
  • 32

Pig安装配置及基本使用

前置条件 成功安装配置Hadoop集群 下载并解压pig安装包 下载地址:http://pig.apache.org/ 解压pig安装包:tar -zxvf pig-0.12.0.tar.gz...
  • gywtzh0889
  • gywtzh0889
  • 2016年07月18日 16:41
  • 164
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Pig安装及本地模式测试,体验
举报原因:
原因补充:

(最多只允许输入30个字)