我的背景——在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报告。

其他回答

看看“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时,从某种意义上说,这意味着我们正在尝试大量的数据处理,数据处理的最终目标将是从中生成内容/报告。

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

1)加载数据处理

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

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

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

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

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

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

简而言之,要对两者进行一个非常高水平的概述:

1) Pig是hadoop上的关系代数

2) Hive是一个SQL over hadoop(比Pig高一级)

从链接: http://www.aptibook.com/discuss-technical?uid=tech-hive4&question=What-kind-of-datawarehouse-application-is-suitable-for-Hive?

Hive不是一个完整的数据库。Hadoop和HDFS的设计约束和局限性限制了Hive的功能。

Hive最适合数据仓库应用,其中

1)分析相对静态的数据,

2)不需要快速响应时间,并且

3)当数据变化不迅速时。

Hive没有提供OLTP(在线事务处理)所需的关键特性。它更接近于OLAP工具,在线分析处理。 因此,Hive最适合数据仓库应用程序,其中维护和挖掘大型数据集以获得见解、报告等。

一般来说,Pig对于ETL类型的工作负载很有用。例如,您每天需要对数据进行的一组转换。

当你需要运行特别的查询或只是想要探索数据时,Hive就会发挥作用。它有时可以作为可视化层(Tableau/Qlikview)的接口。

两者都是必不可少的,但目的不同。