Pig安装及简单实例

标签: pig 实例 | 发表时间:2014-01-11 06:36 | 作者:zythy
出处:http://blog.csdn.net
前面讲到了如何用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_INSTALL=/opt/pig-0.12.0
export PATH=$PATH:$PIG_INSTALL/bin
如果没有设置JAVA环境变量,此时还需要设置JAVA_HOME,比如:
export JAVA_HOME=/usr/lib/jvm/java-6-sun
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集群的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,依次输入以下命令(注意以分号结束语句):
1) records = load ‘/home/user/input/temperature1.txt’ as (year: chararray,temperature: int);
2) dump records;
3) describe records;
4) valid_records = filter records by temperature!=999;
5) grouped_records = group valid_records by year;
6) dump grouped_records;
7) describe grouped_records;
8) max_temperature = foreach grouped_records generate group,MAX(valid_records.temperature);
备注:valid_records是字段名,在上一语句的describe命令结果中可以查看到group_records 的具体结构。
9) dump max_temperature;

最终结果为:


 
作者:zythy 发表于2014-1-10 22:36:00 原文链接
阅读:48 评论:0 查看评论

相关 [pig 实例] 推荐:

Pig安装及简单实例

- - CSDN博客云计算推荐文章
前面讲到了如何用MapReduce进行数据分析. 当业务比较复杂的时候,使用MapReduce将会是一个很复杂的事情,比如你需要对数据进行很多预处理或转换,以便能够适应MapReduce的处理模式. 另一方面,编写MapReduce程序,发布及运行作业都将是一个比较耗时的事情. Pig的出现很好的弥补了这一不足.

使用 Apache Pig 处理数据

- - ITeye论坛最新讨论
Hadoop 的普及和其生态系统的不断壮大并不令人感到意外. Hadoop 不断进步的一个特殊领域是 Hadoop 应用程序的编写. 虽然编写 Map 和 Reduce 应用程序并不十分复杂,但这些编程确实需要一些软件开发经验. Apache Pig 改变了这种状况,它在 MapReduce 的基础上创建了更简单的过程语言抽象,为 Hadoop 应用程序提供了一种更加接近结构化查询语言 (SQL) 的接口.

[转]Pig安装与配置教程

- - 小鸥的博客
Pig是yahoo捐献给apache的一个项目,它是SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能. 这是Yahoo开发的又一个克隆Google的项目:Sawzall. Pig是一个客户端应用程序,就算你要在Hadoop集群上运行Pig,也不需要在集群上装额外的东西.

PIG JOIN 的replicated后标写入内存用法

- - 数据库 - ITeye博客
'''一句话总结:PIG 在2个表JOIN的时候,如果使用Using 'replicated' 会将后面的表分段读到内存中,从而加快JOIN的效率. 但是如果load 到内存的数据超过JVM的限制就会报错==>.     年前写了一个用户session处理的PIG脚本,各种测试通过,数据OK,然后就Happy的回家过年了.

使用Pig对手机上网日志进行分析

- - CSDN博客云计算推荐文章
在成功安装Pig的基础上,本文将使用Pig对手机上网日志进行分析,具体步骤如下:. 手机上网日志文件phone_log.txt,文件内容 及 字段说明部分截图如下. 显示每个手机号的上网流量情况. 1、将Linux本地文件phone_log.txt上传到HDFS. 执行命令dump C; 查看经过以上步骤处理后的结果.

[原]Dubbo实例

- -
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. Remoting: 网络通信框架,实现了sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能. Registry: 服务目录框架用于服务的注册和服务事件发布和订阅.

VisualVM 使用实例

- - 开源软件 - ITeye博客
VisualVM 是一款免费的性能分析工具. 监控程序运行的实时数据,从而进行动态的性能分析. 同时,它能自动选择更快更轻量级的技术尽量减少性能分析对应用程序造成的影响,提高性能分析的精度. 转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析. 1     系统转储:JVM 生成的本地系统的转储,又称作核心转储.

学习AngularJS实例

- - Web前端 - ITeye博客
怎么样快速学习AngularJS. 相信很多初学者都有过或者类似的疑问,其实这个问题没有标准的答案,每个人的技术背景、工作经验等等都不经相同,所以学习AngularJS的切入点肯定也就不同,我之前初略使用过knockoutjs,当我第一眼看到AngularJS的Helloworld案例后,顿时就被声明式的语法和强大的双向绑定特性所吸引.

Kafka编程实例

- - CSDN博客云计算推荐文章
    Producer是一个应用程序,它创建消息并发送它们到Kafka broker中. 这些producer在本质上是不同. 比如,前端应用程序,后端服务,代理服务,适配器对于潜在的系统,Hadoop对于的Producer. 这些不同的Producer能够使用不同的语言实现,比如java、C和Python.

kafka开发实例

- - 互联网 - ITeye博客
//启动zookeeper server (用&是为了能退出命令行):. //启动kafka server: . 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.