首页 > 代码库 > Pig安装及本地模式实战

Pig安装及本地模式实战

Pig是Apache的一个开源项目,用于简化MapReduce的开发,实质Pig将转化为MapReduce作业,使开发人员更多专注数据而不是执行的本质,是不懂java人员的福利。

Pig由以下两部分组成:

1、表达数据流的语言,成为Pig Latin。

2、运行Pig Latin程序的执行环境。目前有两种环境:在单个JVM本地执行和在HADOOP集群上分步执行

废话不多说,实战起来:

和Apache其他项目一样,安装Pig都很简单,在/etc/profile文件中设置环境变量。

#set pig environment
export PIG_HOME=/usr/local/hadoop/pig
export PATH=$PATH:$PIG_HOME/bin

执行source /etc/profile 使新加入的环境变量生效 。

下面的命令验证是否成功:

pig -version
pig -x local

由于是本地模式故在命令行输入pig -x local 将启动Grunt,即Pig交互式shell


wKiom1NiZp-CYh9hAALpBb8g4uA545.jpg


使用Pig实现MapReduce的开发的统计单词个数,如下脚本:

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


我们直接运行:

pig -x local count_pig.pig

结果:前面是单词,后面是计数

(555,1)
(Hello,2)
(World,2)

一、Pig支持注释的,注释方式:

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

2、另一种是Java中的注释方式, /* 注释内容 */ ,它的注释可以一行也可以跨行

二、pig的行模式:

   Pig 有两种运行模式:Local 模式MapReduce 模式。当 Pig Local 模式运行的时候, Pig 将只访问本地一台主机;当 Pig MapReduce 模式运行的时候, Pig 将访问一个 Hadoop 集群和 HDFS 的安装位置。这时, Pig 将自动地对这个集群进行分配和回收。因为 Pig 系统可以自动地对 MapReduce 程序进行优化,所以当用户使用 Pig Latin 语言进行编程的时候,不必关心程序运行的效率, Pig 系统将会自动地对程序进行优化。这样能够大量节省用户编程的时间。

测试示例如下:

本地模式:pig -x local test.pig

MapReduce模式:pig test.pig(或者pig -x mapreduce test.pig,pig test.pig为其简写形式)

三、pig运行方式:

Pig Local 模式和 MapReduce 模式都有三种运行方式,分别为:Grunt Shell 方式、脚本文件方式和嵌入式程序方式下面我们将对其进行一一介绍。

1.Local 模式

1 Grunt Shell 方式

   用户使用 Grunt Shell 方式时,需要首先使用命令开启 Pig Grunt Shell ,只需在Linux 终端中输入如下命令并执行即可:

   $pig –x local

     这样 Pig 将进入 Grunt Shell Local 模式,如果直接输入“ $pig ”命令, Pig 首先检测 Pig 的环境变量设置,然后进入相应的模式。如果没有设置 MapReduce

     境变量, Pig 将直接进入 Local 模式。

     Grunt Shell Windows 中的 Dos 窗口非常类似,这里用户可以一条一条地输入命令对数据进行操作。

( 2 ) 脚本文件方式

    使用脚本文件作为批处理作业来运行 Pig 命令,它实际上就是第一种运行方式中命令的集合,使用如下命令可以在本地模式下运行 Pig 脚本:

     $pig –x local script.pig

其中,“ script.pig ”是对应的 Pig 脚本,用户在这里需要正确指定 Pig 脚本的位置,否则,系统将不能识别。例如, Pig 脚本放在“ /root/pigTmp ”目录下,那

      么这里就要写成“ /root/pigTmp/script.pig ”。用户在使用的时候需要注意 Pig 给出的一些提示,充分利用这些能够帮助用户更好地使用 Pig 进行相关的操作

( 3 ) 嵌入式程序方式

     我们可以把 Pig 命令嵌入到主机语言中,并且运行这个嵌入式程序。和运行普通的Java 程序相同,这里需要书写特定的 Java 程序,并且将其编译生成对应的 class

     件或 package 包,然后再调用 main 函数运行程序。用户可以使用下面的命令对 Java 源文件进行编译:

     $javac -cp pig-*.*.*-core.jar local.java

     这里“ pig-*.*.*-core.jar ”放在 Pig 安装目录下,“ local.java ”为用户编写的 java 源文件,并且“ pig-*.*.*-core.jar ”和“ local.java ”需要用户正确地指定相应的       位置。例如,我们的“ pig-*.*.*-core.jar ”文件放在“ /root/hadoop-0.20.2/ ”目录下,“ local.java ”文件放在“ /root/pigTmp ”目录下,所以这一条命令我们应       该写成:$javac -cp /root/hadoop-0.20.2/ pig- 0 . 20 . 2 -core.jar /root/pigTmp/ local.java当编译完成后, Java 会生成“ local.class ”文件,然后用户可以通过          如下命令调用执行此文件。

$ java -cp pig-*.*.*-core.jar:. Local

2.MapReduce 模式

(1 ) Grunt Shell 方式

用户在 Linux 终端下输入如下命令进入 Grunt Shell 的 MapReduce 模式:

$pig –x mapreduce

2 ) 脚本文件方式

  用户可以使用如下命令在 MapReduce 模式下运行 Pig 脚本文件。

$pig –x mapreduce script.pig

3 ) 嵌入式程序

   和 Local 模式相同,在 MapReduce 模式下运行嵌入式程序同样需要经过编译和执行两个步骤。用户可以使用如下两条命令,完成相应的操作。

javac -cp pig-0.7.0-core.jar mapreduce.java

java -cp pig-0.7.0-core.jar:. mapreduce


本文出自 “人生转型ing” 博客,请务必保留此出处http://junsy.blog.51cto.com/3597934/1405430