1.什么是Pig
Pig是一个用来处理大规模数据集的平台,最早是Yahoo!公司的项目,后来共享给了Apache公司。Pig可以看做是Hadoop的客户端,可以连接到Hadoop集群进行数据分析工作,使用Pig可以简化MapReduce任务的开发过程。
Pig使用PigLatin语言进行数据处理,PigLatin是一种类似于SQL的面向数据流的语言,使用起来非常方便,对于不熟悉Java的用户简直是一种福音。使用PigLatin语言可以对数据进行排序、过滤、求和、分组、关联等常用操作,也可以自定义函数,除此之外PigLatin还是一种轻量级的脚步语言。
Pig可以看做是PigLatin语言到MapReduce任务的映射器。Pig可以自动对集群资源进行分配和回收,并且自动对MapReduce任务进行优化。
2.Pig和Hive的对比
(1)相同点
- Pig 和 Hive 都是Hadoop生态下的数据分析引擎
- Pig 和 Hive 都是只有计算、没有存储,计算使用MapReduce,存储使用HDFS
- Pig 和 Hive 都是将类SQL语言编写的程序转换成复杂的MapReduce任务来执行
(2)不同点
- Pig使用PigLatin语言,Hive使用Hive SQL(简称HQL)语言
- Pig侧重业务逻辑的实现,Hive侧重编程效率的提高:例如实现一个业务逻辑,使用Pig需要一步一步来操作,使用Hive一条HQL语句就搞定
- Pig可以用来在短时间内获取一个复杂的业务逻辑处理结果,Hive可以用来执行定时任务
3.Pig和MapReduce的对比
pig针对一些基本的处理逻辑已经做好了封装,直接使用对应的命令即可,但是使用mapreduce 代码的话就需要自己实现,并且使用pig还不需要考虑代码的优化。使用mapreduce的话会出现数据倾斜的问题,但是使用pig可以避免这个问题。
4.Pig的应用场景
最主要的就是数据清洗。
5.Pig的使用方式
(1)Grunt Shell
在Pig Grunt Shell下执行Pig命令。
(2)Bash Shell
在外部Bash Shell中执行Pig命令,如:
bin/pig -e "A = load 'a.txt' as (id:int,name:chararray);dump A;"
(3)Pig脚本
使用脚本来执行Pig程序,如:
vim my.pig
-- 单行注释
/*
多行注释
*/
A = load 'a.txt' as (id:int,name:chararray);
dump A;
执行命令
bin/pig my.pig
6.Pig的体系结构
Pig的体系结构如下图所示:
imagePig的位置介于SQL和MapReduce之间,相当于为用户提供了三个层面操作数据的工具:SQL、Pig、MapReduce,其中SQL最简单。用户可以根据需要选择任何一种方式操作数据。如果用户直接使用SQL来处理数据,那么可以通过Pig自动将SQL转换为MapReduce任务并作出优化,最后提交给集群执行。
7.Pig里面的数据类型
(1)基本数据类型
- int:整型
- long:长整型
- float:单精度浮点型
- double:双精度浮点型
- chararray:字符串类型
- bytearray:字节数组类型
- boolean:布尔类型
- datetime:日期时间类型
- biginteger:大整数类型
- bigdecimal:大浮点数类型
(2)复合数据类型
- tuple:元组,如:(1,2,3)
- bag:包,如:{(1,2),(3,5),(4,7,9)}
- map:映射,如:[key#value]
网友评论