执行查询时,hive是否运行hadoop?

时间:2012-04-20 15:24:47

标签: database hadoop hive

我试图了解蜂巢和hadoop如何互动。从我读过的教程中我看来,在运行HIVE查询之前,您运行map / reduce作业来获取输入数据。这似乎适得其反,如果我已经运行map / reduce作业并以易于解析的格式获取数据,为什么我不将数据放入传统数据库。

感谢您的帮助, 森

3 个答案:

答案 0 :(得分:4)

Hive对存储在HDFS上的文件进行操作。除了最简单的查询之外,hive还会生成并运行mapreduce作业。对于非常简单的查询(SELECT * FROM MyTable),它只会将文件从磁盘流式传输。

输入数据不需要来自MapReduce-它可以是上传到HDFS的简单文本文件。见http://developer.yahoo.com/hadoop/tutorial/module2.html#commandref

答案 1 :(得分:1)

Hive通过提供大量parralel处理数据库的功能,填补了开源软件中非常重要的空白。在其他领域 - 它为我们提供了横向可扩展的分析SQL引擎。
特别是对于你的问题,我可以看到一些主要的情况,当Hive比RDMS更好。
a)数据已经在HDFS中,我们在那里有一些其他用法(如MR工作)
b)有太多数据要加载到单个服务器RDMBS中。
c)我们只需要查询一次或两次数据。在这种情况下,Hive可以在相对较慢的数据加载时间内胜过RDMBS。

答案 2 :(得分:0)

是的。 Hive构建在具有分布式计算功能的Hadoop之上。 Hive访问HDFS以存储文件。每个表都作为文件存储在HDFS上。