Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 猪和蜂巢的区别?为什么两者都有?_Hadoop_Hive_Apache Pig - Fatal编程技术网

Hadoop 猪和蜂巢的区别?为什么两者都有?

Hadoop 猪和蜂巢的区别?为什么两者都有?,hadoop,hive,apache-pig,Hadoop,Hive,Apache Pig,我的背景——在Hadoop世界工作了4周。使用Cloudera的Hadoop虚拟机涉足了Hive、Pig和Hadoop。阅读过谷歌关于Map Reduce和GFS()的论文 我明白- 猪的语言猪的拉丁语是一种转变 来自(适合程序员思考的方式) 的类SQL声明式样式 编程和Hive的查询语言 类似于SQL Pig坐在Hadoop的顶部,在 原则也可以放在最上面 德赖德。我可能错了,但蜂巢是 与Hadoop紧密耦合 Pig拉丁语和Hive命令 编译以映射和减少作业 我的问题是——当一只(比如猪)

我的背景——在Hadoop世界工作了4周。使用Cloudera的Hadoop虚拟机涉足了Hive、Pig和Hadoop。阅读过谷歌关于Map Reduce和GFS()的论文

我明白-

  • 猪的语言猪的拉丁语是一种转变 来自(适合程序员思考的方式) 的类SQL声明式样式 编程和Hive的查询语言 类似于SQL

  • Pig坐在Hadoop的顶部,在 原则也可以放在最上面 德赖德。我可能错了,但蜂巢是 与Hadoop紧密耦合

  • Pig拉丁语和Hive命令 编译以映射和减少作业


我的问题是——当一只(比如猪)可以达到目的时,两者兼得的目的是什么。是不是因为猪被雅虎传道了!Facebook的Hive?

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

摘自Hadoop O'Reilly的书:

Pig:一种数据流语言及其应用 探索大城市的环境 数据集

Hive:分布式数据仓库


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

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

还值得注意的是,对于Hive,您可以使用很好的界面来处理此数据(Beeswax for HUE,或Hive web界面),并且它还为您提供有关数据(模式等)的信息的元存储,这些信息可用作数据的中心信息


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

看看这篇文章,艾伦·盖茨是雅虎的猪建筑师!,相比之下,我们什么时候会使用类似SQL的Hive而不是Pig。他提出了一个非常有说服力的例子,说明像Pig这样的过程语言(与声明式SQL相比)的有用性及其对数据流设计者的实用性。

Hive的设计目的是吸引一个熟悉SQL的社区。它的理念是我们不需要另一种脚本语言。配置单元支持使用用户选择的语言(可以嵌入到SQL子句中)映射和减少转换脚本。熟悉SQL的分析师以及使用Python编程的数据挖掘人员在Facebook上广泛使用了它。Pig中的SQL兼容性工作已经被放弃——因此这两个项目之间的区别非常明显

支持SQL语法还意味着可以与Microstrategy等现有BI工具集成。Hive有一个ODBC/JDBC驱动程序(这是一项正在进行的工作),它应该允许这种情况在不久的将来发生。它还开始添加对索引的支持,这应该允许支持这种环境中常见的深入查询


最后——这与问题没有直接关系——Hive是执行分析查询的框架。虽然它的主要用途是查询平面文件,但没有理由不能查询其他存储。目前,Hive可用于查询存储在Hbase中的数据(这是一个键值存储,类似于大多数RDBMSE中的键值存储),HadoopDB项目已使用Hive查询联合RDBMS层。

以下是有关使用Pig或Hive的其他链接


我发现这是最有用的(尽管它已经一岁了)——

它特别谈到了猪对蜂巢以及他们在雅虎的工作时间和地点。我觉得这很有见地。一些有趣的注释:

对数据集进行增量更改/更新时:

相反,结合新的增量数据并使用 结果与上一次完全联接的结果是相同的 正确的方法。这只需要几分钟。标准数据库 可以以这种增量方式在Pig拉丁语中执行操作, 使Pig成为这个用例的好工具

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

Pig与流媒体的集成也使研究人员能够轻松地 以一个Perl或Python脚本为例,他们已经在一个小型计算机上调试过了 数据集,并在庞大的数据集上运行它

关于将配置单元用于数据仓库:

在这两种情况下,关系模型和SQL最适合。的确 数据仓库一直是SQL的核心用例之一 它的大部分历史。它具有支持类型的正确构造 分析人员希望使用的查询和工具的列表。而且它已经在 供现场的工具和用户使用

Hadoop子项目配置单元提供了一个SQL接口和关系数据库 Hadoop的模型。Hive团队已经开始与BI集成 通过接口(如ODBC)使用工具

  • Pig拉丁语是数据流风格,更适合软件工程师。而sql更适合习惯sql的分析人员。对于复杂的任务,对于配置单元,您必须手动创建临时表来存储中间数据,但对于pig,这不是必需的

  • Pig拉丁语适用于复杂的数据结构(如小型图形)。pig中有一个名为DataAG的数据结构,它是元组的集合。有时,您需要计算涉及多个元组的度量(元组之间有一个隐藏链接,在本例中,我称之为图)。在这种情况下,很容易编写一个UDF来计算涉及多个元组的度量。当然可以在蜂箱中进行,但它并不像现在这样方便