apache-pig开始使用apache-pig


备注

本节概述了apache-pig是什么,以及开发人员为什么要使用它。

它还应该提到apache-pig中的任何大型主题,并链接到相关主题。由于apache-pig的文档是新的,您可能需要创建这些相关主题的初始版本。

安装或设置

Linux的

要求(r0.16.0)

强制性

根据目前的Apache-Pig 文档,它仅支持UnixWindows 操作系统。

  • Hadoop 0.23.X,1.X或2.X
  • 安装Java 1.6或更高版本并将JAVA_HOME环境变量设置为Java安装目录

可选的

  • Python 2.7或更高版本(Python UDF)
  • Ant 1.8(用于构建)

下载最新的Pig版本

http://pig.apache.org/releases.html#Download下载最新版本的pig

安装

mkdir Pig
cd Downloads/ 
tar zxvf pig-(latest-version).tar.gz 
tar zxvf pig-(latest-version).tar.gz 
mv pig-(latest-version).tar.gz/* /home/Pig/
 

组态

安装Apache Pig后,我们必须对其进行配置。

打开.bashrc文件

vim ~/.bashrc
 

在.bashrc文件中,设置以下变量 -

export PIG_HOME = /home/Pig
export PATH  = PATH:/home/Pig/bin
 

保存文件并使用在环境中重新加载bashrc

. ~/.bashrc
 

验证猪版

pig –version 
 

如果安装成功,则上面的命令显示已安装的Pig版本号。

测试猪安装

pig -h
 

这应显示与pig相关的所有可能命令

您的猪现在已在本地安装,您可以使用本地参数来运行它

pig -x local
 

连接到Hadoop

如果在群集上安装了Hadoop1.x或2.x,则会设置HADOOP_HOME环境变量。

你可以像以前一样在.bashrc中添加一行,将pig连接到Hadoop

export PIG_CLASSPATH = $HADOOP_HOME/conf
 

跑猪

执行模式

您可以使用pig (bin / pig)命令或运行jar 文件(java -cp pig.jar)来运行Pig

PIG 脚本可以在3种不同的模式下执行:

  • 本地模式

     pig -x local ...
     
  • Mapreduce模式 (默认模式)

     pig -x mapreduce ...
          (or)
     pig ...
     
  • Tez本地模式

     pig -x tez ...
     

互动模式

Pig可以使用Grunt shell以交互模式运行。可以在此shell中以交互方式输入Pig Latin语句和命令。

$ pig -x <mode> <enter>
grunt>
 

Mode 可以是执行模式之一,如上一节中所述。

批处理模式

Pig也可以批处理模式执行。这里提供了一个包含pig语句和命令列表的.pig 文件。

$ pig -x <mode> <script.pig>
grunt>
 

类似地, Mode 可以是执行模式之一,如上一节中所述。

什么是猪?

Pig提供了一个在Hadoop上并行执行数据流的引擎。它包括一种用于表达这些数据流的语言Pig Latin。 Pig Latin包含许多传统数据操作(连接,排序,过滤等)的运算符,以及用户开发自己的读取,处理和写入数据的功能。 Pig是一个Apache开源项目。这意味着用户可以自由下载它作为源或二进制文件,自己使用它,为它做贡献,并根据Apache许可条款 - 在产品中使用它并根据需要进行更改。

Pig中的字数统计示例

输入文件

Mary had a little lamb
its fleece was white as snow
and everywhere that Mary went
the lamb was sure to go.
 

猪字数统计代码

-- Load input from the file named Mary, and call the single
-- field in the record 'line'.
input = load 'mary' as (line);

-- TOKENIZE splits the line into a field for each word.
-- flatten will take the collection of records returned by
-- TOKENIZE and produce a separate record for each one, calling the single
-- field in the record word.
words = foreach input generate flatten(TOKENIZE(line)) as word;

-- Now group them together by each word.
grpd = group words by word;

-- Count them.
cntd = foreach grpd generate group, COUNT(words);

-- Print out the results.
dump cntd;
 

产量

Mary,2
had,1
a,1
little,1
lamb,2
its,1
fleece,1
was,2
white,1
as,1
snow,1
and,1
everywhere,1
that,1
went,1
the,1
sure,1
to,1
go,1