Pig 初识

Pig是什么?

Pig是一个脚本语言,可以把它看作一个并行处理大数据集的平台,通过它可以对数据进行group、filter、sort、join等操作,有些类似于SQL,允许用户自定义函数来处理数据。它主要运行在Hadoop集群上,来简化MapReduce程序的开发。

工作机制

那么它是怎么处理数据的?又是怎么在Hadoop集群上运行的呢?

Pig有两部分组成:一部分为执行处理数据的语言,叫做Pig Latin。另一部分为运行Pig Litin程序的环境。

Pig Latin具有丰富的数据类型、数据结构、一系列处理数据的函数等。

运行环境负责将Pig Latin程序转换为可执行的形式,然后运行。运行Pig Latin程序通常有两种模式:一种为本地运行模式。另一种为MapReduce模式,运行在Hadoop集群上,默认为运行在Hadoop集群上,在幕后会将Pig Latin程序转化为一系列MapReduce Job来执行。作为一个程序员来说不需要关注这些,只需关注数据而不是它是怎么执行的。

相比编写MapReduce程序,编写Pig Latin程序要简洁高效很多。通常编写一个MapReduce程序的时间要很长:编写mapper和reducer、编译、打包、提交Job和检索结果等都是比较耗时的操作。对于Pig来说,这些繁琐的操作可以通过几条脚本指令就可以完成。

和关系型数据库的区别

Pig的Pig Latin有些类似于SQL,比如和SQL语句中相似的一些操作符:GROUP BY、DESCRIBE等。但它和RDBMS(关系型数据库)还是有些不同的。

两者最明显的区别是Pig Latin是一种数据流式的编程语言(即程序的逻辑和数据有绝对关系,数据的流动顺序、先后次序,决定着程序的运行逻辑),而SQL是一种声明式编程语言(关于声明式编程语言可查看这篇文章:http://blog.csdn.net/qiruiduni/article/details/49638525)。也就是说,Pig Latin编程是在输入数据上执行的一步一步操作集,它的每一步都是一个转换。而SQL语句是一组约束,一起定义输出。

RDBMS在表中存储数据,并且有严格的预定义Schema,而Pig对处理的数据相对宽松,可以在运行时定义Schema,并且是可选的。

RDBMS支持在线操作、低延迟查询、事务、索引等特性,这些Pig都不具有。

Pig支持复杂的、嵌套的数据结构。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章