您的位置:首页 > 大数据

胜还是平? Pig vs Hive!!!

2015-06-19 13:21 323 查看
翻译自:http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features

这篇文章讨论了pig和hive的特性。

开发者通常处于选择满足业务需求的技术体系。 在hadoop体系中,pig和hive很相似,并能给出几乎相同的结果,但是那种技术更适合特殊的业务场景了?这里列出了pig和hive的一些对比。

PIG and Hive:

流类型:
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有时会内存泄露和不靠谱的性能,然而,有一些参数可以进行调整和定位问题。

巨头支持:
Pig:Yahoo,Twitter, LinkedIn
Hive: FaceBook
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hive pig 大数据