pig vs hive

1、概念

一、什么是Hive?

Hive可以看做是SQL到Mapreduce的一个映射器,就是不用开发Mapreduce,只要懂SQL就可以了,HiveQL是标准SQL92的一个子集,和标准的SQL并不完全一样,HiveQL本身有百分之二十的一个扩展,大概百分之八十的语法和标准的SQL是一致的,所以对于数据分析人员来讲,就可以很方便的切入到Hadoop的平台上去做数据分析。

二、什么是Pig?

Pig是处理大数据集的数据流语言。什么是数据流呢?就是处理数据的流程可以一步步定义,比如第一步加载,第二步转换,第三步再转换,第四步存储,可以一步步定义数据的走向,很类似我们在数据挖掘中进行的系列处理流程。因为pig是数据流的语言,所以很适合做物质的数据探索和ETL阶段数据的非处理,他和Spark的思想很相似,所以也可以说Spark是实现正确的Pig。

 

2、区别

 

流类型:
Pig是过程式数据流语言。过程式语言通常按照一步一步的执行方式去编写,你能够控制和优化每一步。
Hive更像sql,因此,它是声明式语言,你要指定需要做什么而不是怎么做。Hive依靠自己的优化器,因此hive中优化是比较难的。
易用性:
Pig拥有新而不同的语法,需要额外的时间去学习。
Hive更像sql,开发者会更兴奋的去使用hive.
一般场景:
推荐程序开发者使用Pig。主要原因是它计算高效,当你的查询有大量的join和filter时,pig更合适。
Hive更多的用于分析,它遵循Hadoop和DatawareHouse一些规则。一般更倾向使用Hive产生报表。如果你的查询join和filters比较少可以继续使用Hive,相反,如果查询拥有很多join,Hive的性能也许会降低。


数据类型:
Pig能高效处理结构化和非结构化数据。
Hive能高效的处理结构化数据。


中间层:
Pig使用变量表示数据,当要存储中间结果,可以很容易的用变量存起来并在以后引用。
Hive使用表表示数据,存储中间结果比较困难,需要创建一个表,并从其他的表插入进去。因此,呈现一个复杂的查询时,可能需要几百行的代码。


调试方式:
Pig可以使用本地模式调试。
Hive使用本来模式调试比较复杂并且很费时。


扩展性:
Pig中UDF很容易。
Hive中UDF相对麻烦。


维护性:
Pig比Hive差一点。
Hive比较简单。


持久性:
Pig中可能不会保留变量的值,每一次你都需要重新执行pig代码重新获取变量值。
Hive中即使退出当前会话外部表依然存在,因为外部表依然指向HDFS文件。


开发时间:
pig开发需要更多的时间,更多的依赖对pig的熟悉度。
SQL语句,开发时间很少。


兼容性:
RDBMS与Pig兼容有点复杂,因为pig的语法完全不同。
大部分在RDBMS中的sql可以在Hive中执行,只有少数需要修改。


数据量
Pig处理大数据很高效。
Hive有时会内存泄露和不靠谱的性能,然而,有一些参数可以进行调整和定位问题

 

3、新的系统理论和产品

Impala

Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。Impala最开始是参照 Dremel系统进行设计的Impala最开始是参照 Dremel系统进行设计的

 

Google Dremel:

Google Dremel 原理 - 如何能3秒分析1PB

http://www.yankay.com/google-dremel-rationale/

 

Dremel的开源实现

OpenDremel/Dazo
OpenDremel是一个开源项目,最近改名为Dazo。可以在GoogleCode上找到http://code.google.com/p/dremel/。目前还没有发布。作者声称他已经完成了一个通用执行引擎和OpenStack Swift的集成。笔者感觉其越走越歪,离Dremel越来越远了。

Apache Drill
Drill 是Hadoop的赞助商之一MapR发起的。Drill作为一个Dremel的山寨项目,有和Dremel相似的架构和能力。他们希望Drill最终会想Hive,Pig一样成为Hadoop上的重要组成部分。为Hadoop提供快速查询的能力。和Dremel有一点不同,在数据模型上,开源的项目需要支持更标准的数据结构。比如CSV和JSON。同时Drill还有更大的灵活性,支持多重查询语言,多种接口。

 

Presto:http://prestodb-china.com/

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。领先的互联网公司包括Airbnb和Dropbox都在使用Presto

 

4、按照应用场景区分大数据产品

从问题域出发认识Hadoop生态系统从问题域出发认识Hadoop生态系统

(1)实时应用场景(0~5s):Storm、S4、Cloudera Impala,Apache Drill等;
(2)交互式场景(5s~1m):这种场景通常能要求必须支持SQL,则可行系统有:Cloudera Impala、Apache Drill、Shark等;
(3)非交互式场景(1m~1h):通常运行时间较长,处理数据量较大,对容错性和扩展性要求较高,可行系统有:MapReduce、Hive、Pig、Stinger等;
(4)批处理场景(1h+):通常运行时间很长,处理数据量很大,对容错性和扩展性要求很高,可行系统有:MapReduce、Hive、Pig、Stinger等。

本段引用http://dongxicheng.org/mapreduce-nextgen/rethinking-hadoop-from-problems-solved/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小她爹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值