阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Pig安装及简单使用(pig0.12.0 Hadoop2.2.0)

108次阅读
没有评论

共计 3000 个字符,预计需要花费 8 分钟才能阅读完成。

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

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

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 变量。且还需要设置如下变量:

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

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计3000字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中