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

export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop

下一步,需要告诉Pig它所用Hadoop集群的Namenode和Jobtracker。

修改pig.properties文件增加如下参数

#namenode

fs.default.name=hdfs://hadoop-master.xx.com/:8020

#jobtracker

mapred.job.tracker=hadoop-master.xx.com:8021

#mapreduce任务queue指定用户名

mapred.job.queue.name=erpmerge

#日志修改配置到当前程序目录下

pig.logfile=/home/hadoop/pig/logs

一般情况下,正确安装配置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 读取本地文件,将会报错。

转载于:https://blog.51cto.com/davideylee/1386152

Pig安装及简单使用(pig0.12.0 hadoop2.2.0)相关推荐

  1. Hbase完全分布式集群安装配置(Hbase1.0.0,Hadoop2.6.0)

    1.安装软件 OS:centos6.5 Hadoop:hadoop2.6.0 Hbase:hbase.1.0.0 JDK: jdk1.7.0_51 集群机器: 192.168.153.130(hado ...

  2. pig安装配置以及PigPen插件与eclipse的集成

    pig下载 pig版本的选择非常重要!!! 因为pig不同版本支持的hadoop版本不同,很容易因为版本不同导致错误.直接上图说明 上图可以看到,官网针对每个pig适用的hadoop版本都做了说明,所 ...

  3. hadoop2.6.0安装详细步骤

    文章目录 1.简述 2. 安装步骤 1. linux环境准备 1.基础环境规划 2. host配置和主机名(四台) 3. 安装jdk 2. linux免密登录配置 1. 关闭四台服务器的防火墙和SEL ...

  4. 安装hadoop2.6.0伪分布式环境

    集群环境搭建请见:http://blog.csdn.net/jediael_lu/article/details/45145767 一.环境准备 1.安装linux.jdk 2.下载hadoop2.6 ...

  5. Ubuntu 14.10 安装 hadoop-2.6.0单机配置和伪分布式配置

    安装openssh-server(用于远程连接) sudo apt-get install ssh openssh-server sudo apt-get install ssh openssh-cl ...

  6. 搭建hadoop2.6.0集群环境

    一.规划 (一)硬件资源 10.171.29.191 master 10.171.94.155  slave1 10.251.0.197 slave3 (二)基本资料 用户:  jediael 目录: ...

  7. Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)

    原文地址:http://www.cnblogs.com/lion.net/p/3903197.html 目录: 一.什么是Flume? 1)flume的特点 2)flume的可靠性 3)flume的可 ...

  8. 1. mysql8.0.22安装及其简单使用

    mysql8.0.22 1. 数据库的相关概念 2. 数据库存储数据的特点 3. MySQL产品的安装 一.MySQL服务的启动和停止 二.MySQL服务的登录和退出 三.MySQL的常见命令和语法规 ...

  9. TensorFlow GPU 版本安装个人总结:Win10 + Python3.5 + CUDA 9.0.176 + cudnn v7.5.0.56 + TensorFlow 1.12.0

    TensorFlow GPU 版本安装个人总结:Win10 + Python3.5 + CUDA 9.0.176 + cudnn v7.5.0.56 + TensorFlow 1.12.0 接触机器学 ...

最新文章

  1. Fabric环境搭建
  2. python3 异步错误 asyncio.Semaphore RuntimeError: Task got Future attached to a different loop
  3. oracle sum 数据类型,五、Oracle内置函数
  4. c语言标准整形,C语言整形数值范围问题
  5. Python中copy,deepcopy,浅拷贝(“=”)和深拷贝(“copy.deepcopy()”)
  6. Python学习笔记:排列与组合
  7. ef mysql 读写分离_基于 EntityFramework 的数据库主从读写分离服务插件
  8. php正则表达式 什么,php正则表达式是什么?(代码实例)
  9. KPI总结模板:What
  10. patran如何看屈曲因子_如何真正有效地改善驼背?
  11. 教程:GIMP中改变画布大小
  12. 2020计算机软考初级都考什么,软考都考什么内容
  13. 基于STM32串口通信的ESP8266WiFi模块使用
  14. WebView下载文件
  15. linux操作系统基础教程第二版附录答案,《linux操作系统》第2版完整习题答案 电子工业出版社.doc...
  16. vector用erase删除元素时,为什么被删元素的析构函数会被调用更多次?
  17. mysql字段类型NUMC_全自动数字论证机(迫真)
  18. 深度学习在slam的应用Deep Learning Applications in SLAM
  19. 16进制转10进制 nodejs_Js字符串与十六进制的相互转换 【转】
  20. Python综合评价模型(三)秩和比法

热门文章

  1. python 利器_python利器之切片
  2. 打印出来只有a4纸一半 预览是正常的_还需要去打印店?能随身使用的便携打印机:汉印MT800评测...
  3. 51ctopython自动化测试工程师课程价格,Python自动化测试开发实战 一门能就业的测试课...
  4. freemark判断传过来的值为空和不为空及问号、感叹号用法
  5. 加密芯片提升消费电子产品设备的安全性能
  6. VB 详细枚举指定目录、文件夹文件列表
  7. 直播 | “深度学习”到底是什么?这篇文章讲明白了
  8. 谷歌推出开源工具DeepVariant,用深度学习识别基因变异
  9. SpringCloud Alibaba - Nacos 作为配置中心 读取Properties配置信息
  10. python+appium 自动化2--元素定位uiautomatorviewer