`
qindongliang1922
  • 浏览: 2188015 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117633
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126036
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59985
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71375
社区版块
存档分类
最新评论

Apache Pig入门学习文档(一)

    博客分类:
  • Pig
阅读更多
1,Pig的安装
   (一)软件要求
   (二)下载Pig  
   (三)编译Pig
2,运行Pig
   (一)Pig的所有执行模式
   (二)pig的交互式模式
   (三)使用pig脚本执行模式
3,Pig  Latin语句的声明
   (一)加载数据
   (二)使用和处理数据
   (三)存储中间数据
   (四)存储最终数据
   (五)调试Pig Latin语言
4,Pig的属性值管理
5,Pig一些注意事项

1,Pig的安装
(一)软件安装
必须配置:
(1)hadoop
下载地址:
http://hadoop.apache.org/common/releases.html
可以同时运行不同版本的Pig只要设置相对应的HADOOP_HOME即可,如果你没有设置HADOOP_HOME,pig默认将会运行嵌入式的版本hadoop(1.0.0)
(2)Java1.6+
下载地址:
http://java.sun.com/javase/downloads/index.jsp
需要安装JDK,并设置JAVA_HOME
可选配置:
python2.5 (如果使用python写UDF时,需要安装)
JavaScript1.7 (如果使用JavaScript写UDF时,需要安装)
JRuby1.6.7  (如果使用JRuby写UDF时,需要安装)
Groovy1.8.6 (如果使用Groovy写UDF时,需要安装 )
Ant1.7  (如果需要编译构建,则需要下载安装,搞JAV的,建议安装)
Junit4.5 (如果需要单元测试,则需要安装)
(二)下载Pig
注意以下几点:
     1,下载最近的而且是稳定版本的Apache Pig
2,然后解压下载Pig,注意下面二点:
pig的主脚本文件,pig位于bin目录(/pig.n.n.n/bin/pig),这里面包括了pig的环境变量的定义
pig的属性文件,pig.properties位于conf目录(/pig.n.n.n/conf/pig.properties)你也可以通过PIG_CONF_DIR环境变量来指定改文件的绝对路径。

  3,配置pig的环境变量,如下面的代码:
$ export PATH=/<my-path-to-pig>/pig-n.n.n/bin:$PATH
     4,测试pig安装时否成功,使用pig -help命令

  (三):编译Pig
1,从svn导入pig的源代码
         svn co http://svn.apache.org/repos/asf/pig/trunk
2,进入pig的根目录下,执行ant命令,编译pig
3,校验pig.jar,运行一个单元测试ant test
2,运行Pig

在pig里面,可以使用多种不同的模式运行它:

序号 模式名 是否支持本地模式 Hadoop集群模式
1 交互式模式 支持 支持
2 批处理模式 支持 支持

(一)执行模式:
pig有两种运行模式或者运行类型:
本地模式:运行本地模式非常简单,你只需要一台机器即可,所有的文件和脚本都在本地磁盘上,指定模式使用命令 pig -x flag (例如: pig -x local),本地模式下不支持MapReduce的(线程)并行,因为在当前的hadoop版本中,hadoop的LocalJobRunner 运行器不是一个线程安全的类。
hadoop集群模式:hadoop集群模式也称Map Reduce模式,前提是你的机器上已经安装好了hadoop的集群,并能正常运行,集群模式是pig默认的模式,在没有任何声明或指定的情况下,总是会以集群的模式运行pig作业,当然你可以使用命令pig 或者 pig -x mapreduce来指定运行模式
例子:
以pig命令方式启动:
(1):pig -x local (local模式)
(2)pig -x mapreduce (集群模式)
以java命令启动模式:
(1),java -cp pig.jar  org.opache.pig.Main -x local (local模式)
(2),java -cp pig.jar  org.opache.pig.Main -x mapreduce (集群模式)

(二)交互式模式:
我们可以使用pig在一个交互式的模式下通过使用grunt shell,调用grunt shell,只需要执行pig命令即可,然后我们就会在命令行,操作pig,例子如下:
     grunt> A = load 'passwd' using PigStorage(':');
     grunt> B = foreach A generate $0 as id;
     grunt> dump B;

(三)脚本模式
我们可以把pig的一系列处理,封装成一个pig脚本文件,后缀名以.pig结尾,相信在linux下写过shell脚本的朋友都很好理解,我们把我们的linux命令封装在.sh的脚本里,这样执行起来非常方便,而且容易管理。

假如我们现在有一个test.pig的脚本,那么我们怎么执行呢?
(1)以local模式运行: pig -x local id.pig
(2)以集群模式运行: pig -x mapreduce.pig


使用Pig脚本文件的好处: 
我们可以将pig语法声明和pig命令封装在当个pig的脚本文件里,而且以后缀名.pig结尾,非常有利于我们区分这些脚本

我们可以在命令行和grunt shell里面,使用run或exec命令,来运行pig,这里散仙就不举例子了,后面会写文章。
pig脚本也支持外部传参数,这和shell脚本的传参类似,非常灵活,后面文章会写。

pig的注释:
(1)多行注释:/*pig脚本语句*/
(2)当行注释:- - pig脚本语句 两个
注意:
   Pig支持直接运行在HDFS上,Amazon S3,或者其他的一些分布式系统上的脚本或一个jar包,如果是在分布式的系统上,我们在运行时,需要指定网络的url路径,例如:
 
  $ pig hdfs://nn.mydomain.com:9020/myscripts/script.pig


3,Pig Latin的语句声明:

在pig中,pig latin是使用pig来处理数据的基本语法,这类似于我们在数据库系统中使用SQL语句一样。

我们使用pig latin语句,获取一个输入,然后经过一系列处理之后,会得到一个输出,所以在所有的pig脚本中,只有load(读数据)和store(写数据)两个语句是必不可少的。

除此之外,Pig的语法块可能还会包括,一些表达式和schema,Pig latin可以跨多行命令组成一个span,必须在小括号的模式中,而且以必须以分号结束。 ( ; )


Pig latin语句,通常组织如下:
(一)一个load声明从文件系统上加载数据
(二)一系列的的转化语句去处理数据
(三)一个dump语句,来展示结果或者stroe语句来存储结果

只有Dump和Store语句能产生输出




(一)加载数据:
使用load操作和(load/store)函数读数据进入Pig(默认的存储模式是PigStorage)
(二)使用和处理数据
Pig允许你使用多种方式处理数据,如果我们是刚入门的朋友,熟悉下面的这些操作符,将会有助于我们使用和理解Pig。
使用filter语句来过滤tuple或一行数据(类似于SQL中的where)
使用foreach语句来操作列的数据(类似于 select field1,filed 2 , .... from table里面限制列返回。)
使用group语句来分组. (类似SQL里面的group by)
使用cogroup, inner join,outer join来分组或关联两个以上的表关联(与SQL里的join类似)
 使用union语句来合并两个以上关系的结果数据,使用split语句可以把一个表拆分为多个分散的小表(注意,散仙在这里说表,只是为了方便理解,在pig没有表这一个概念,虽然有类似的结构)
(三)存储中间结果集
pig生成的中间结果集,会存储在HDFS一个临时的位置,这个位置必须已经在HDFS中存在,这个位置可以被配置使用pig.temp.dir这个属性,默认是存储在/tmp目录,在0.7以前的版本,这个值是固定的,0.7以后,我们可以灵活的更改路径,通过配置

(四)存储最终结果集
使用store操作和load/store函数,可以将结果集写入文件系统中,默认的存储格式是PigStorage,在我们测试阶段,我们可以使用dump命令,直接将结果显示在我们的屏幕上,方便我们调试,在一个生产环境中,我们一般使用store语句,来永久存储我们的结果集。

(五)调试Pig Latin
pig提供了一写操作符,来帮助我们调试我们的结果:
 使用dump语句,显示结果在我们的终端屏幕上
 使用describe语句,来显示我们的schema的关系(类似查看表的结构)
 使用explain语句,来显示我们的执行逻辑或物理视图,可以帮助我们查看map,reduce的执行计划
 使用illustrate语句,可以一步步的查看我们的语句执行步骤

此外,pig还定义了一些非常方面的别名集,来快速帮助我们调试脚本:
 dump的别名 \d
 describe的别名 \de
 explain的别名 \e
 illustrate的别名  \i
 退出\q
4,Pig的属性值
Pig支持java中的properties文件,我们可以通过使用这个文件来定制pig的行为,我们可以使用help命令,来查看所有的pig的属性值



如何指定一个pig的值?

 通过pig.properties文件,注意需要把这个文件包含在java的classpath中
 -D 命令在命令行指定一个pig属性 例如:pig -Dpig.tmpfilecompression=true
 -P命令可以指定自己的一个properties文件。 例如:pig -P mypig.properties
 set命令,例如:set pig.exec.nocombiner true

注意:properties文件,使用标准的Java的properties文件格式



地方他们的优先级如下:
pig.properties < -D Pig property < -P properties file < set comman

指定hadoop的文件配置属性与Pig是一样的。

Hadoop和pig的所有属性值,最后都会在pig里统一收集起来,它是有效的对于任何UDF
例如UDFContext对象,为了访问这些属性,我们可以调用getJobConf方法


4,Pig一些注意事项
1. 确保你的JDK安装完毕
2. 确保的你的pig的bin目录执行脚本环境变量已经安装
export PATH=/<my-path-to-pig>/pig-0.9.0/bin:$PATH
3. 确保你的PIG_HOME环境变量是有效的
export PIG_HOME=/<my-path-to-pig>/pig-0.9.0
4. 配置ant脚本,编译pig的文档
5. 配置PIG_CLASSPATH,指定集群所需的所有的配置文件,包括hadoop的core-site.xml,hdfs-site.xml和mapred-site.xml
6. 掌握pig的一些基本UDF函数
 ExtractHour,提取小时从每行数据中
 NGramGenerator,生成n-garms的words
 NonURLDetector,移除一个空的列,或者值是url的数据
 ScoreGenerator,计算n-garm的分数
 ToLower,转小写
 TutorialUtil,分割查询字符串组成一个words


上面的这些UDF是一些比较典型的例子,散仙建议初学者可以先看一看,看不懂也无所谓,UDF使用的几率也不是特别大,最重要的还是基础语法的使用,关于配置环境的安装,如果你用的是原生的Apache Hadoop,则按照上面的步骤来,是非常有效的,因为这个文档,就是参照apache官方的文档翻译的,英文好的,可以直接点击这个链接http://pig.apache.org/docs/r0.12.0/start.html,如果是其他的版本的hadoop,比如CDH或者HDP,你可能使用CM(Cloudera Manager)或者AM(Ambari)来安装,这样就省去自己安装的过程,你可以直接使用Pig来处理数据了,不过,初学者还是建议自己动手折腾一下,后期熟练了,可以用些管理工具,来自动安装,这样能学的更深入些,看完后,有问题的欢迎指正,或者到群公众号留言。


如果有什么疑问,欢迎扫码关注微信公众号:我是攻城师(woshigcs)
本公众号的内容是有关大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!



  • 大小: 8.8 KB
1
2
分享到:
评论

相关推荐

    Hadoop快速入门介绍文档

    - **Pig**:一种高层次的数据流语言和执行框架,简化了Hadoop MapReduce任务的开发过程。 - **Spark**:虽然不是Hadoop的一部分,但经常与Hadoop一起使用,提供了一个更快的数据处理框架。 #### 五、版权说明 文档...

    7.Hadoop入门进阶课程_第7周_Pig介绍、安装与应用案例.pdf

    根据提供的文档信息,这是一门关于Hadoop生态系统的入门级课程中的第七周内容,主要介绍了Pig这一工具的基本概念、安装过程以及如何通过Pig进行数据分析的实际案例。 #### 二、Pig简介 Pig是由Yahoo贡献给Apache...

    Hadoop、HBase、Hive、Pig、Zookeeper资料整理

    - **Hadoop-0.20.0-HDFS+MapReduce+Hive+HBase十分钟快速入门.doc**:这与前面的快速入门文档类似,可能对Hadoop的早期版本进行了快速介绍。 - **Hbase_分析报告白皮书.doc**:这可能是一份关于HBase在某个具体场景...

    Hadoop的学习(入门).docx

    【Hadoop学习(入门)】 Hadoop是大数据领域的一个核心框架,主要由HDFS(Hadoop Distributed File System)和MapReduce两部分组成,用于处理和存储海量数据。它是一个开源项目,由Apache软件基金会开发,旨在提供...

    hadoop 入门文档

    本文将深入探讨Hadoop的入门知识,帮助初学者理解这一强大的技术。 一、Hadoop简介 Hadoop是由Apache基金会开发的开源项目,主要设计用于处理和存储海量数据。它基于Google的MapReduce编程模型和GFS(Google File ...

    apache-hadoop-docs

    这份"apache-hadoop-docs"文档集合包含了从Apache官网获取的Hadoop技术资料,为学习和理解Hadoop提供了详尽的指导。这些文档涵盖了从快速入门到集群搭建,再到架构设计等多个关键方面,是深入理解Hadoop不可或缺的...

    [详细完整版]大数据入门.pptx

    2. **Pig**:Apache Pig是针对大规模数据集分析的平台,包括高级语言Pig Latin和MapReduce任务编译器。Pig Latin简化了数据分析,为非Java程序员提供了便利,适合处理半结构化数据,但不支持低延迟查询。 3. **HBase...

    hadoop入门资料集锦

    1. **官方文档**:Apache Hadoop的官方文档是最权威的学习资料。 2. **教程和实战案例**:在线课程、博客文章、实战项目可以帮助理解和应用Hadoop。 3. **书籍**:如《Hadoop:The Definitive Guide》等经典书籍提供...

    hadoop入门共21页.pdf.zip

    除了这份入门文档,还有很多在线课程、社区和官方文档可供深入学习,如Apache官网、Stack Overflow和GitHub上的开源项目。 这份压缩包中的"赚钱项目"可能是关于如何利用Hadoop进行商业数据分析或数据挖掘的实践...

    Hadoop 官方文档(中文版)

    Hadoop 是一个开源的分布式计算框架,由Apache软件基金会维护,它允许在大规模集群中对大量数据进行并行处理。这个“Hadoop 官方文档(中文版)”提供了全面的指导,涵盖了从初学者到高级用户的各个层面。下面将详细...

    hadoop 入门

    Hadoop 是一个由Apache基金会开发的开源分布式计算框架,它以其高效、可扩展和容错性著称,是大数据处理领域的重要工具。本篇将从Hadoop的基本流程、应用开发以及集群配置和使用技巧三个方面进行深入讲解。 1. **...

    hadoop文档收录大全

    总之,Hadoop是大数据领域的关键技术之一,通过《Hadoop文档收录大全》的学习,你能够全面掌握这一技术,应对各种大数据挑战。无论你是数据分析师、数据科学家还是系统管理员,都能从中受益。记得在学习过程中不断...

    Hadoop开发者入门专刊.zip

    Hadoop是Apache软件基金会开发的一个开源框架,主要用于处理和存储大量数据,尤其适合大数据分析和分布式计算。在这个专刊中,我们将深入探讨Hadoop的核心组件,包括HDFS(Hadoop Distributed File System)和...

    机器学习笔记

    这些知识点覆盖了机器学习领域的多个方面,包括算法、模型、理论和应用工具,为入门者提供了一个全面的学习框架。通过这些知识点,我们可以更好地理解文档内容,并将机器学习的方法应用于实际问题中。

    Hadoop入门手册

    Hadoop是Apache基金会开发的一个开源项目,核心在于分布式存储系统HDFS(Hadoop Distributed File System)和分布式计算框架MapReduce。HDFS使得大规模数据的存储变得可能,而MapReduce则提供了处理这些数据的强大...

    nosql 入门教程

    第一部分 NoSQL入门 第1章 NoSQL的概念及适用范围 2 1.1 定义和介绍 3 1.1.1 背景与历史 3 1.1.2 大数据 5 1.1.3 可扩展性 7 1.1.4 MapReduce 8 1.2 面向列的有序存储 9 1.3 键/值存储 11 1.4 文档数据库 ...

    Hadoop开发者入门专刊

    Hadoop是大数据处理领域的一个核心框架,由Apache软件基金会开发,主要用于分布式存储和计算。以下是Hadoop的一些关键概念和技术点: 1. **分布式文件系统(HDFS)**: Hadoop的核心组件之一,它将大型数据集分布在...

    大数据开发入门指南:从概念到实践应用讲解.zip

    大数据开发入门指南是一份全面介绍大数据领域的文档,涵盖了从基础概念到实际应用的各个环节,旨在帮助初学者系统地理解和掌握大数据技术。以下是这份指南中可能包含的重要知识点: 1. **大数据概念**:大数据指的...

    hadoop学习步骤说明

    为了提高编程效率和代码可读性,还可以考虑使用Apache Pig或Apache Hive等工具,它们提供了一种更高级别的抽象,使得编写复杂的MapReduce任务变得更加简单。 总之,学习Hadoop是一个循序渐进的过程,需要不断地实践...

Global site tag (gtag.js) - Google Analytics