第11章Pig

Pig提高了处理大数据的抽象能力。Mapreduce允许程序员指明map函数,然后是reduce函数,但是,当你当你把你的数据加工成这种模式的时候,就需要很多Mapreduce阶段,这将会是一个挑战。有了Pig之后,数据结构就更丰富了,典型的多值和嵌套;你可以对数据进行的变换也更加强大了,包括,joins,等,这些可不是Mapreduce微弱的心脏(意即功能很强大)。

Pig由两部分组成:

用于表示数据流的语言,名叫Pig Latin

Pig Latin程序的执行环境。目前有两种环境,独立的虚拟机本地运行,和Hadoop集群上面分布式的运行。

一个Pig Latin程序是有很多操作组成的,或者是转换,Pig Latin程序用在输入数据上面,来产生输出数据。全局来看,这些操作描述了一个数据流,Pig执行环境这个数据流转换成可执行的东西,并执行。在底层,Pig把程序转换成一系列的Mapreduce jobs,但是作为程序员,你几乎不知道这件事情,这允许你只需关注数据,而不用关心执行的具体细节。

Pig是一个探索大数据集的脚本语言。Mapreduce的一个缺点是,开发周期长。写mappersreducers,编译、打包代码,提交job,检索结果是否有商业价值,即便是Streaming,去掉了编译和打包,还是要经历这些的。Pig的优点就是它处理TB级的数据,仅仅是简单的在控制台上输出几行Pig Latin。事实上,Pig是在Yahoo!里创建的。目的是为了让工程师们能更容易的掌握处理那里的大量的数据。Pig能够处理查询,它在你的代码中,提供了几个内省数据结构的方法。更有用的是,它可以在你输入的数据,的具有代表性的子集上面,进行实验,来检测你的代码是否有错误,然后,才释放到整个数据中。

Pig被设计的是可扩展的。几乎处理过程的所有的部分都可以自定义:loading, storing, filtering, grouping, and joining,都可以被UDFs代替。这些函数在Pig的嵌套数据模型上面操作,因此它可以与Pig的操作整合的很好。另外一个好处是,UDFs趋向于比Mapreduce的程序库更常用。

但是,Pig并不适合所有的数据处理tasks。像MApreduce,是用来处理批量数据的。如果你只是想在大量数据中使用一小部分数据,Pig不会执行的很好,因为它是用来扫描全表的,至少是表的大部分。

在某些情况下,Pig并不像Mapreduce写的程序一样高效。尽管,Pig版本之间的的区别很小,Pig团队为了实现Pig的关系型操作,写了复杂的算法。坦白的说,除非你愿意去研究很多优化Java Mapreduce代码的方法,否者,用Pig Latin来写查询语句会节省你很多的时间。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值