Pig简介
Pig为大型数据集的处理提供了更高层次的抽象。
Pig包括两部分:
用于描述数据流的语言,称为Pig Latin。
用于运行Pig Latin程序的执行环境。当前有两个环境:单JVM中的本地执行环境和Hadoop集群上的分布式执行环境。
Pig的安装
Pig的安装条件
Java环境对于Pig是必需的,如果想要Pig运行在MapReduce模式下,则还需要安装Hadoop。Hadoop的安装方法可以在我之前的文章中获取
java程序员的大数据之路(1):Hadoop安装
Pig的安装过程
我用的是pig0.17.0版本,可以在官网下载地址中下载http://www.apache.org/dyn/closer.cgi/pig。下载好后执行解压命令tar -zvxf pig-0.17.0.tar.gz
。
解压完之后,配置环境变量,在/etc/profile文件中添加以下代码
export PIG_HOME=/usr/local/pig/pig-0.17.0(替换成自己的目录)
export PATH=$PATH:$PIG_HOME/bin:$PIG_HOME/conf
保存退出后,要执行命令source /etc/profile
使环境变量生效。
输入 pig –help查看是否安装成功。
Pig的执行模式
Pig有两种执行模式:本地模式和MapReduce模式。
本地模式
在本地模式下,Pig运行单在个JVM中,访问本地文件系统。改模式只用于处理小规模数据集或使用Pig。执行命令pig -x local就能启动Grunt。Grunt是Pig的外壳程序(shell)
MapReduce模式
在MapReduce模式下,Pig将查询翻译为MapReduce作业,然后在Hadoop集群上运行。集群可以是伪分布的,也可以是全分布的。要使用MapReduce模式,首先要检查所安装的Pig是否与Hadoop版本兼容。Pig0.17对应于Hadoop2.x,可以通过设置HADOOP_HOME来指定Pig运行的Hadoop。如果不设置,Pig0.17默认运行Hadoop2.7.3。
Pig程序的运行
Pig程序有三种方法执行。
脚本
Pig可以运行包含Pig命令的脚本文件。对于很短的脚本,也可以使用-e选项直接在命令行中输入脚本字符串
Grunt
在Grunt环境中,可以通过run和exec命令运行Pig脚本
嵌入式方法
可以在Java中运行Pig程序。类似于使用JDBC运行SQL程序。
与数据库比较
Pig Latin和SQL看上去很像,但也有很多不同之处。相较而言,它们之间最大的不同就是Pig Latin是一种数据流编程语言,而SQL是描述型编程语言。RDBMS把数据存储在严格定义了模式的表内,Pig对它所处理的数据要求宽松的多,可以在运行时定义模式。几个支持在线和低延迟查询的特性是RDBMS有但Pig没有的。例如事务和索引。Pig不支持随机读和几十毫秒级的查询。也不支持对一小部分数据的随机写。所有的写都是批量的、流式的写操作。