我的背景——在Hadoop世界工作了4周。使用Cloudera的Hadoop VM对Hive, Pig和Hadoop进行了一些尝试。已阅读谷歌关于Map-Reduce和GFS的论文(PDF链接)。

我明白——

猪的语言猪的拉丁语是一种转变 来自(适合程序员的思维方式) SQL喜欢声明式的 编程和Hive的查询语言密切相关 类似于SQL。 Pig位于Hadoop之上 原则也可以凌驾于之上 德律阿得斯。我可能错了,但蜂巢错了 与Hadoop紧密耦合。 都是Pig Latin和Hive命令 编译映射和减少作业。

我的问题是——当一个(比如猪)可以达到目的时,拥有两者的目标是什么?难道只是因为雅虎宣传了Pig !和Facebook的Hive ?


当前回答

这里有一些使用Pig或Hive的附加链接。

http://aws.amazon.com/elasticmapreduce/faqs/#hive-8

http://www.larsgeorge.com/2009/10/hive-vs-pig.html

其他回答

看看“dezyre”文章中关于猪和蜂巢的坚果壳比较

Hive在分区、服务器、Web接口和JDBC/ODBC支持方面优于PIG。

一些差异:

Hive is best for structured Data & PIG is best for semi structured data Hive is used for reporting & PIG for programming Hive is used as a declarative SQL & PIG as a procedural language Hive supports partitions & PIG does not Hive can start an optional thrift based server & PIG cannot Hive defines tables beforehand (schema) + stores schema information in a database & PIG doesn't have a dedicated metadata of database Hive does not support Avro but PIG does. EDIT: Hive supports Avro, specify the serde as org.apache.hadoop.hive.serde2.avro Pig also supports additional COGROUP feature for performing outer joins but hive does not. But both Hive & PIG can join, order & sort dynamically.

我相信你的问题的真正答案是,它们是/是独立的项目,没有集中协调的目标。他们在早期处于不同的空间,随着两个项目的扩展,随着时间的推移逐渐重叠。

摘自Hadoop O'Reilly的书:

Pig:一种数据流语言 探索环境非常大 数据集。 Hive:分布式数据仓库

您可以通过pig/hive查询实现类似的结果。主要的区别在于理解/编写/创建查询的方法。

Pig倾向于创建数据流:在每个步骤中进行一些处理的小步骤 Hive提供了类似SQL的语言来操作数据,因此从RDBMS转换更容易(Pig对于没有SQL经验的人来说更容易)

同样值得注意的是,对于Hive来说,你可以很好的界面来处理这些数据(Beeswax for HUE,或Hive web界面),它还为你提供了关于你的数据的信息(模式等)的亚metastore,这是关于你的数据的一个有用的中心信息。

我同时使用Hive和Pig,用于不同的查询(我使用它可以更快/更容易地编写查询,我这样做主要是临时查询)-它们可以使用相同的数据作为输入。但目前我的大部分工作都是通过Beeswax完成的。

看看这篇来自Alan Gates的文章,他是Yahoo!,这与使用Hive而不是Pig这样的SQL进行了比较。他给出了一个非常有说服力的例子,说明了像Pig这样的过程性语言(相对于声明性SQL)的有用性,以及它对数据流设计人员的实用性。

在这个链接中阅读PIG和HIVE的区别。

http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features

给出了所有的方面。如果你不知道该选择哪个,那么你必须看看那个网页。