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

我明白——

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

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


当前回答

猪什么都吃!这意味着它可以使用非结构化数据。

Hive需要一个模式。

其他回答

我发现这个是最有帮助的(尽管它已经有一年的历史了)——http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo

它特别谈到了Pig vs Hive,以及他们在雅虎的工作时间和地点。我发现这很有见地。一些有趣的笔记:

关于数据集的增量更改/更新:

方法来连接新的增量数据并使用 结果与以前的结果完全连接在一起就是 正确的方法。这只需要几分钟。标准数据库 操作可以以这种增量的方式在Pig Latin中实现, 这使得Pig成为这个用例的好工具。

关于通过流媒体使用其他工具:

猪与流媒体的集成也使研究人员很容易 使用他们已经调试过的Perl或Python脚本 数据集,并在一个巨大的数据集上运行。

关于使用Hive进行数据仓库:

In both cases, the relational model and SQL are the best fit. Indeed, data warehousing has been one of the core use cases for SQL through much of its history. It has the right constructs to support the types of queries and tools that analysts want to use. And it is already in use by both the tools and users in the field. The Hadoop subproject Hive provides a SQL interface and relational model for Hadoop. The Hive team has begun work to integrate with BI tools via interfaces such as ODBC.

猪什么都吃!这意味着它可以使用非结构化数据。

Hive需要一个模式。

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

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

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

〇蜂巢Vs猪

Hive是一个SQL接口,允许SQL精明的用户或其他工具,如Tableu/Microstrategy/任何其他工具或语言,有SQL接口。

PIG更像是一个ETL管道,有一步一步的命令,比如声明变量、循环、迭代、条件语句等。

当我想编写复杂的分步逻辑时,我更喜欢编写Pig脚本而不是hive QL。当我很舒服地写一个sql拉数据我想我使用Hive。对于hive,你需要在查询之前定义表(就像你在RDBMS中做的那样)

两者的目的不同,但在引子下,两者都做相同的,转换为映射减少程序。此外,Apache开源社区正在为这两个项目添加越来越多的特性

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

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

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