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

我明白——

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

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


当前回答

当我们在使用Hadoop时,从某种意义上说,这意味着我们正在尝试大量的数据处理,数据处理的最终目标将是从中生成内容/报告。

所以它内部由两个主要活动组成:

1)加载数据处理

2)生成内容并用于报告等。

加载/数据处理->猪将是有帮助的。

这有助于ETL(我们可以使用pig脚本执行ETL操作)。

一旦处理了结果,我们可以使用hive根据处理的结果生成报告。

Hive:它构建在hdfs之上,用于仓库处理。

我们可以很容易地使用hive从pig生成的经过处理的内容生成adhoc报告。

其他回答

简单来说,Pig是一个高级平台,用于创建与Hadoop一起使用的MapReduce程序,使用Pig脚本我们将把大量数据处理成所需的格式。

一旦得到处理后的数据,这些处理后的数据就会保存在HDFS中,以便后续处理以获得所需的结果。

在存储的处理数据之上,我们将应用HIVE SQL命令来获得所需的结果,在内部这个HIVE SQL命令运行MAP Reduce程序。

看看“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.

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

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

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

我发现这个是最有帮助的(尽管它已经有一年的历史了)——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.

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

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

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

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