原文地址:http://www.linuxidc.com/Linux/2014-03/99055.htm

我们用MapReduce进行数据分析。当业务比较复杂的时候,使用MapReduce将会是一个很复杂的事情,比如你需要对数据进行很多预处理或转换,以便能够适应MapReduce的处理模式,另一方面,编写MapReduce程序,发布及运行作业都将是一个比较耗时的事情。

Pig的出现很好的弥补了这一不足。Pig能够让你专心于数据及业务本身,而不是纠结于数据的格式转换以及MapReduce程序的编写。本质是上来说,当你使用Pig进行处理时,Pig本身会在后台生成一系列的MapReduce操作来执行任务,但是这个过程对用户来说是透明的。

Pig的安装

Pig作为客户端程序运行,即使你准备在Hadoop集群上使用Pig,你也不需要在集群上做任何安装。Pig从本地提交作业,并和Hadoop进行交互。

Pig的安装

Pig作为客户端程序运行,即使你准备在Hadoop集群上使用Pig,你也不需要在集群上做任何安装。Pig从本地提交作业,并和Hadoop进行交互。

1)下载Pig

前往http://mirror.bit.edu.cn/apache/pig/ 下载合适的版本,比如Pig 0.12.0

2)解压文件到合适的目录

tar –xzf pig-0.12.0

3)设置环境变量

export PIG_HOME=/home/hadoop/pig

export PATH=$PATH:$PIG_HOME/bin

如果没有设置JAVA环境变量,此时还需要设置JAVA_HOME,比如:

export JAVA_HOME=/usr/local/jdk1.7.0_51

4)验证

执行以下命令,查看Pig是否可用:

pig –help

Pig执行模式

Pig有两种执行模式,分别为:

1)本地模式(Local)

本地模式下,Pig运行在单一的JVM中,可访问本地文件。该模式适用于处理小规模数据或学习之用。

运行以下命名设置为本地模式:

pig –x local

2) MapReduce模式

在MapReduce模式下,Pig将查询转换为MapReduce作业提交给Hadoop(可以说群集,也可以说伪分布式)。

应该检查当前Pig版本是否支持你当前所用的Hadoop版本。某一版本的Pig仅支持特定版本的Hadoop,你可以通过访问Pig官网获取版本支持信息。

Pig会用到HADOOP_HOME环境变量。如果该变量没有设置,Pig也可以利用自带的Hadoop库,但是这样就无法保证其自带肯定库和你实际使用的HADOOP版本是否兼容,所以建议显式设置HADOOP_HOME变量。且还需要设置如下变量:(如果版本pig和hadoop不匹配的话一定要配置)

exportPIG_CLASSPATH=$HADOOP_HOME/etc/hadoop

下一步,需要告诉Pig它所用Hadoop集群的Namenode和Jobtracker。一般情况下,正确安装配置Hadoop后,这些配置信息就已经可用了,不需要做额外的配置。

Pig默认模式是mapreduce,你也可以用以下命令进行设置:

pig –x mapreduce

运行Pig程序

Pig程序执行方式有三种:

1)脚本方式

直接运行包含Pig脚本的文件,比如以下命令将运行本地scripts.pig文件中的所有命令:

pig scripts.pig

2) Grunt方式

Grunt提供了交互式运行环境,可以在命令行编辑执行命令。

Grund同时支持命令的历史记录,通过上下方向键访问。

Grund支持命令的自动补全功能。比如当你输入a =foreach b g时,按下Tab键,则命令行自动变成a = foreach b generate。你甚至可以自定义命令自动补全功能的详细方式。具体请参阅相关文档。

3)嵌入式方式

可以在java中运行Pig程序,类似于使用JDBC运行SQL程序。

Pig Latin编辑器

PigPen是一个Ecliipse插件,它提供了在Eclipse中开发运行Pig程序的常用功能,比如脚本编辑、运行等。下载地址:http://wiki.apache.org/pig/PigPen

其他一些编辑器也提供了编辑Pig脚本的功能,比如vim等。

简单使用

我们以查找最高气温为例,演示如何利用Pig统计每年的最高气温。假设数据文件内容如下(每行一个记录,tab分割):

1990 21

1990 18

1991 21

1992 30

1992 999

1990 23

以local模式进入pig,依次输入以下命令(注意以分号结束语句):

records = load ‘/home/adoop/input/temperature1.txt’as (year: chararray,temperature: int);

dump records;

describe records;

valid_records = filter records bytemperature!=999;

grouped_records = group valid_records byyear;

dump grouped_records;

describe grouped_records;

max_temperature = foreach grouped_recordsgenerate group,MAX(valid_records.temperature);

--备注:valid_records是字段名,在上一语句的describe命令结果中可以查看到group_records的具体结构。

dump max_temperature;

最终结果为:

(1990,23)

(1991,21)

(1992.30)

注意:

1)如果你运行Pig命令后报错,且错误消息中包含如下信息:

WARN org.apache.pig.backend.hadoop20.PigJobControl- falling back to defaultJobCo)ntrol (not using hadoop 0.20 ?)

java.lang.NoSuchFieldException:runnerState

则可能你的Pig版本和Hadoop版本不兼容。此时可重新针对特定Hadoop版本进行编辑。下载源代码后,进入源代码根目录,执行以下命令:

ant clean jar-withouthadoop-Dhadoopversion=23

注意:版本号是根据具体Hadoop而定,此处23可用于Hadoop2.2.0。

2)Pig同一时间只能工作在一种模式下,比如以MapReduce模式进入后,只能读取HDFS文件,如果此时你用load 读取本地文件,将会报错。

相关阅读:

Pig安装与配置教程 http://www.linuxidc.com/Linux/2013-04/82785.htm

Pig 安装部署及MapReduce模式下测试 http://www.linuxidc.com/Linux/2013-04/82786.htm

Pig安装及本地模式测试,体验 http://www.linuxidc.com/Linux/2013-04/82783.htm

Pig的安装配置与基本使用 http://www.linuxidc.com/Linux/2013-02/79928.htm

Hadoop Pig进阶语法 http://www.linuxidc.com/Linux/2013-02/79462.htm

Hadoop搭建教程学习笔记 http://www.linuxidc.com/Linux/2013-03/81669.htm

Pig安装及简单使用(pig版本0.13.0,Hadoop版本2.5.0)的更多相关文章

  1. percona-toolkit 3.0.13 简单安装记录

    percona-toolkit 3.0.13 简单安装记录 环境:centos6.x mysql:8.0.17 yum -y install perl-DBIyum -y install perl-D ...

  2. Linux 性能测试工具 sysbench 的安装与简单使用

    文章目录 Linux 性能测试工具 sysbench 的安装与简单使用        一 背景        二 实验环境            2.1 操作系统            2.2 其他配 ...

  3. mysql8.0.13 的docker镜像安装

    1.从docker中获取mysql8.0.13镜像 docker pull mysql:8.0.13通过 docker images 命令查看镜像是否获取到了 2.运行 mysql8.0.13 镜像 ...

  4. ubuntu 18.04下载mysql8.0.13源码并编译安装(暂时没有成功)

    执行如下命令下载解压MySQL8的源码文件压缩包到本地文件: wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.13.ta ...

  5. 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型

    忘的差不多了, 先补概念, 然后开始搭建集群实战 ... . 一 Hadoop版本 和 生态圈 1. Hadoop版本 (1) Apache Hadoop版本介绍 Apache的开源项目开发流程 : ...

  6. redis4.0.13主从、哨兵、集群3种模式的 Server端搭建、启动、验证

    本文使用的是redis-4.0.13.tar.gz版本. 两个centos7系统虚拟机:192.168.10.140.192.168.10.150 redis各版本下载地址:http://downlo ...

  7. Hadoop 版本 生态圈 MapReduce模型

    忘的差不多了, 先补概念, 然后开始搭建集群实战 ... . 一 Hadoop版本 和 生态圈 1. Hadoop版本 (1) Apache Hadoop版本介绍 Apache的开源项目开发流程 : ...

  8. HBase各版本对Hadoop版本的支持情况

    转载自:http://blog.csdn.net/sunny05296/article/details/54089194 安装HBase时,要考虑选择正确的Hadoop版本,否则可能出现不兼容的情况. ...

  9. Hadoop版本变迁

    内容来自<Hadoop技术内幕:深入解析YARN架构设计与实现原理>第2章:http://book.51cto.com/art/201312/422022.htm Hadoop版本变迁 当 ...

随机推荐

  1. IOS UITabelView的cell

    一.Cell的重用原理 iOS设备的内存有限,如果用UITableView显示成千上万条数据,就需要成千上万个UITableViewCell对象的话,那将会耗尽iOS设备的内存.要解决该问题,需要重用 ...

  2. using System.Threading;

    /// <summary> /// 执行动作:耗时而已 /// </summary> private void TestThread(string threadName) { ...

  3. C#判断输入的是否是汉字

    第一种方法:正则表达式 string text = "是不是汉字"; for (int i = 0; i < text.Length; i++) { if (Regex.Is ...

  4. tinyMCE自定义添加图片插件

    需求: 在富文本编辑器中插入图片,图片来自用户可以自己上传的图片库. 本来可以用比较恶心的方式,也就是直接用tinyMCE自带的插入图片插件来实现.恶心是因为这个图片插件需要用户填入图片的url. 想 ...

  5. CAF(C++ actor framework)(序列化之复杂类,分析 还有自己不懂的细思恐极函数实现)(三)

    这里应该是序列化的最后一篇.感觉自己写的不是很好,也一点点在学习.这次就不贴上代码了.代码在github上的announce5.cpp.代码简单,但是分析下去会有细思恐极的感觉! 先看一下几个函数是干 ...

  6. QT编译mysql驱动

    一. 下载mysql C链接库 地址:http://dev.mysql.com/downloads/ 根据当前系统选择下载: 二. 安装下载好的mysql驱动文件 注意,一定要安装在不含有中文.空格以 ...

  7. ssh通过密钥免密登录linux服务器

    由于经常要登录远程服务器,每次都要把密码重输一遍,如下所示: # ssh 用户名@服务器IP # 用户名@服务器IP's password:这里需要手动输入密码然后回车 作为一个懒货,必须要想个办法免 ...

  8. 如何实现zs无限期试用

    要删除的文件有两个,分别是.zs与10_0..zs保存的是版本号,10_0保存的是注册码,这两个文件存在的原理是:zend studio 每次启动的会检查这两个文件的创建时间,和当前日期对比,超过30 ...

  9. C语言socket编程--每日签到

    前几天写了个python的每日签到,你运行还得借助crontab,很是不爽.....正好前几天看了个关于c编写daemon进程,加上自己那点可怜的socket知识,于是我们重操旧页,C语言版的每日签到 ...

  10. 《WPF程序设计指南》读书笔记——第9章 路由输入事件

    1.使用路由事件 路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件.通俗地说,路由事件会在可视树(逻辑树是其子集)上,上下routed,如果哪个节点上订阅了 ...