pig的官方安装

本文档详细介绍了Apache Pig的安装步骤,包括安装Hadoop、JDK,以及Pig的配置和使用。同时,文章涵盖了Pig Latin语句的基本构成,如LOAD、FILTER、GROUP等,并提供了在本地模式和MapReduce模式下运行Pig脚本的方法。此外,还讨论了Pig的存储、调试和属性设置,以及Pig Tutorial的执行模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己按照官网装的,顺便把官网的文档给翻译了。如果错误,敬请提示!有部分问题,烦劳大神解压。

安装pig:

1. 下载安装hadoop1.1.2

2. 下载安装JDK1.6

3. 下载pig,解压到指定目录。pig的命令在bin目录中,配置信息在conf中的pig.properties中。

        

4. 将pig的bin目录加入到path中去。运行pig-version

        

 

编译pig

         从svn上下载源码,SVN: svn co http://svn.apache.org/repos/asf/pig/trunk    

         然后在其根目录运行ant就可以了,下面有已经写好的build.xml文件

运行pig

        

 

Local Mode

Mapreduce Mode

Interactive Mode

Yes

Yes

Batch Mode

Yes

yes

 

按照执行类型分有两种执行模式:

         本地模式 - 有一台可访问的机器即可,所有文件的安装和执行都在这个机器的系统上进行。也就是说连接的是linux系统,而不是hadoop集群。使用pig -x local来制定本地模式。本地模式不支持hadoop中的mapper并行执行。因为hadoop的LocalJobRunner不是线程安全的。

     

      MapReduce模式 - 有可访问的hadoop集群和hdfs系统。这是pig的默认执行模式。可以不用指定-x 标记。pig或pig -x mapreduce都是运行这种模式。

     

      这里因为我的hadoop集群没有启动,所以没有进入pig 的shell界面,但是我们可以看到它是在连接hdfs://will-vm1/9000的。这是因为pig会通过环境变量中对HADOOP_HOME的指定定位到hadoop的配置文件。

 

交互模式

     

就是能跟shell进行实时互动,就可以理解为shell操作。

在pig的grunt中能够记忆目录,像linux一样支持相对路径,不像hdfs要一直输入绝对路径。

批处理模式

把交互的命令写进脚本,之后执行脚本。

plus:貌似pig也支持嵌入java代码执行。

 

有自动补全机制,也有eclipse插件PigGen,但是不常用。

pig脚本

注释:单行用--,多行就用/**/

pig能够运行存储在HDFS, Amazon S3等其他分布式系统的scripts(和Jar文件),但是需要指定文件完整的URI。例如,跑一个在HDFS上的脚本:

$ pighdfs://nn.mydomain.com:9020/myscripts/script.pig

Pig Latin Statements

 

基本组成:

l  LOAD语句从文件系统进行读取;

l  一系列的转化语句来执行数据;

l  DUMP语句看结果或者STORE语句存储结果。

注意:要产生output,必须要有DUMP或者STORE语句。

使用数据进行业务操作:

         pig有很多方式供你选择来转化数据。作为开始,先熟悉下面的:

·        使用FILTER 来筛选数据的tuples或者rows. 使用FOREACH来筛选数据的columns.

·        使用 GROUP 进行数据分组. 使用 COGROUPinnerJOIN, 以及 outerJOIN 来组织不同数据之间的关系.

·        使用 UNION 来合并多个关系的内容. 使用SPLIT 来把一个关系的内容分成多个区.

一个pig realtion是很多tuples组成的,它相当于关系数据库中的table,tuples对应table中的row。但是,pig不像关系型数据库那样要求每行都有同样的列数,或者所有的列中各自的数据都要是相同的类型。也要注意无序的relation同时也说明tuples也是无序排列的。Furthermore, processing may be parallelized inwhich case tuples are not processed according to any total ordering.(这句不懂)

存储中间结果

pig会在HDFS的临时目录中存储mr任务的中间输出结果。这个临时位置一定要在HDFS上提前弄好。它的配置参数是pig.temp.dir,默认是/tmp。

最终结果的存储

使用 STORE和 load/storefunctions 把结果写进文件系统。(PigStorage是默认的存储函数)

注意: 在实现的测试阶段,你可以使用DUMP在终端展示结果。但是,在正式生产环境,你会总希望它直接存储进文件里(参见 Storevs. Dump).

调试 Pig Latin

Pig Latin 提供调试Pig Latin语句的命令:

·        使用 DUMP 把结果输出到终端窗口.

·        使用 DESCRIBE 来浏览关系的规范.

·        使用 EXPLAIN 来解析查看逻辑、物理或者mapreduce的执行计划。 to view the logical,physical, or map reduce execution plans to compute a relation.

·        使用 ILLUSTRATE 来查看一系列语句的一步步执行结果.

Pig 属性

Pig 支持许多java参数,我们可以通过这些参数的设置来对pig进行调整. 你可以使用helpproperties 命令把属性列表都查看出来. 所有的这些属性都是可选的,没有必须要指定的.

通过以下机制来指定pig的属性:

·        pig.properties文件 (把包含此文件的目录加到classpath中)

·        使用-D 命令行参数指定(pig-Dpig.tmpfilecompression=true)

·        使用-P 指定一个properties文件 (pig -P mypig.properties)

·        使用 set 方法 (set pig.exec.nocombiner true)

注意: 这个properties文件使用标准Java property格式.

优先级次序:pig.properties < -D 属性 < -P properties 文件 < set 命令(最高).

指定hadoop的属性,我们也可以采用同样的机制:

·        使用Hadoop 配置文件 (include pig-cluster-hadoop-site.xml)

·        使用-D 命令行参数(pig–Dmapreduce.task.profile=true)

·        使用-P 指定配置文件 (pig-P property_file)

·        使用 set 命令(set mapred.map.tasks.speculative.executionfalse)

Hadoop属性会直接送往hadoop,而不是交给pig处理。任何Hadoop属性都可以通过这种方式进行传递.

所有通过pig设定的属性,包括hadoop的相关属性,通过UDFContext的方式对于任意一个UDF都可以使用。我们可以使用getJobConf方法得到这些属性值

Pig Tutorial

Pig tutorial 展示怎样用pig的本地模式和mapreduce模式运行pig脚本。 (参见 ExecutionModes).

在开始阶段, 做如下的预备工作:

  1. 确认环境变量JAVA_HOME设定为你的java的根目录.
  2. 确认环境变量PATH里已经有了pig的bin目录.
3. $ export PATH=/<my-path-to-pig>/pig-0.9.0/bin:$PATH 
  1. 设定 PIG_HOME 环境变量:
 
  1. 创建 pigtutorial.tar.gz 文件:

o   切换到 Pig tutorial 目录 (.../pig-0.9.0/tutorial).

o   编辑目录中的build.xml 文件.

o    Change this:   <property name="pigjar" value="../pig.jar" />
o    To this:       <property name="pigjar" value="../pig-0.9.0-core.jar" />

o   直接在tutorial目录运行ant,创建出pigtutorial.tar.gz文件.

  1. Copy 文件pigtutorial.tar.gz到本地目录.

  1. 解压.
8. $ tar -xzf pigtutorial.tar.gz
  1. 目录pigtmp被创建了,这个目录包含Pig Tutorial文件. 这些文件包含所有在hadoop上运行Pig Script 1 and Pig Script 2的命令.

本地模式运行pig脚本

  1. 转移到pigtmp目录.
  2. 执行下面的命令(使用script1-local.pig或者script2-local.pig).
3. $ pig -x local script1-local.pig
 

可以看到,尽管是本地模式,我也并没有启动hadoop集群,pig会自己去找到hadoop的目录之后启动mapreduce任务。

  1. 去script1-local-results.txt目录中查看part-r-00000结果.

Mapreduce 模式运行pig脚本

  1. 转移到pigtmp目录.
  2. Copy文件excite.log.bz2到HDFS的目录中.
3. $ hadoop fs –copyFromLocal excite.log.bz2 .
  1. 设置环境变量PIG_CLASSPATH为hadoop集群的配置目录(包含core-site.xml, hdfs-site.xml以及mapred-site.xml文件的目录),也设置hadoop的目录HADOOP_CONF_DIR:

  1. 执行下面的命令(使用 script1-hadoop.pig 或者 script2-hadoop.pig):
6. $ pig script1-hadoop.pig
  1. 在HDFS的目录script1-hadoop-results或者script2-hadoop-results中检查结果:
8. $ hadoop fs -ls script1-hadoop-results
9. $ hadoop fs -cat 'script1-hadoop-results/*' | less

Pig Tutorial 文件

Pig tutorial 文件 (pigtutorial.tar.gz) 的内容如下.

File

Description

pig.jar

Pig JAR 文件

tutorial.jar

User defined functions (UDFs) and Java classes

script1-local.pig

Pig Script 1, Query Phrase Popularity (local mode)

script1-hadoop.pig

Pig Script 1, Query Phrase Popularity (mapreduce mode)

script2-local.pig

Pig Script 2, Temporal Query Phrase Popularity (local mode)

script2-hadoop.pig

Pig Script 2, Temporal Query Phrase Popularity (mapreduce mode)

excite-small.log

Log file, Excite search engine (local mode)

excite.log.bz2

Log file, Excite search engine (mapreduce)

 (UDFs)用户自定义函数解释如下.

UDF

Description

ExtractHour

Extracts the hour from the record.

NGramGenerator

Composes n-grams from the set of words.

NonURLDetector

Removes the record if the query field is empty or a URL.

ScoreGenerator

Calculates a "popularity" score for the n-gram.

ToLower

Changes the query field to lowercase.

TutorialUtil

Divides the query string into a set of words.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值