2012-04-20 60 views
2

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

感谢您的帮助, 弥敦道

回答

4

蜂箱上存储的文件HDFS工作。除了最简单的查询之外,配置单元都会生成并运行mapreduce作业。对于非常简单的查询(SELECT * FROM MyTable),它只会将文件从磁盘上流出。

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

0

Hive通过提供大量parralel处理数据库的功能填补了开源软件中非常重要的空白。在其他世界 - 它为我们提供了可横向扩展的分析式SQL引擎。
具体到你的问题,我可以看到几个主要的情况,当蜂房比RDMS更好。
a)数据已经存在于HDFS中,我们还有其他用法(如磁盘作业)
b)有太多数据要加载到单个服务器RDMBS中。
c)我们只需要查询一次或两次数据。在这种情况下,Hive的数据加载时间可能会超过RDMBS。