翻译自: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