如何从HDFS获取数据?蜂巢?

时间:2014-11-03 17:33:21

标签: hadoop hive

我是Hadoop的新手。我运行了一个地图缩小我的数据,现在我想查询它,所以我可以将它放入我的网站。 Apache Hive是最好的方法吗?我非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

请记住,Hive是一个批处理系统,它可以将SQL语句转换为一堆MapReduce作业,并在其间进行阶段构建。此外,Hive是一个高延迟系统,即根据您的数据集大小,您需要几分钟到几小时甚至几天来处理复杂的查询。

因此,如果您想在网站上提供MapReduce作业输出的结果,强烈建议您使用sqoop将结果导出回RDBMS,然后从那里取出。

或者,如果数据本身很大并且无法导出回RDBMS。然后您可以想到的另一个选项是使用像HBase这样的NoSQL系统。

答案 1 :(得分:1)

欢迎来到Hadoop!

高度建议您观看Cloudera Essentials for Apache Hadoop | Chapter 5: The Hadoop Ecosystem并熟悉从HDFS群集传输入站和出站数据的不同方法。该视频易于观察并描述了每种工具的优缺点,但本大纲应为您提供Hadoop生态系统的基础知识:

  1. Flume - 数据集成和平面文件导入HDFS。专为异步数据流(例如,日志文件)而设计。分布式,可扩展和可扩展。支持各种端点。允许在加载到HDFS之前对数据进行预处理。
  2. Sqoop - 结构化数据(RDBMS)和HDFS的双向传输。允许增量导入HDFS。 RDBMS必须支持JDBC或ODBC。
  3. Hive - 与Hadoop类似的SQL接口。需要表结构。需要JDBC和/或ODBC。
  4. Hbase - 允许HDFS的交互式访问。坐在HDFS之上并将结构应用于数据。允许随机读取,与群集水平缩放。不是完整的查询语言;仅允许获取/放置/扫描操作(可与Hive和/或Impala一起使用)。仅对数据进行行键索引。不使用Map Reduce范例。
  5. Impala - 与Hive类似,用于查询存储在HDFS中的大量数据的高性能SQL引擎。不使用Map Reduce。 Hive的好替代品。
  6. Pig - 用于转换大型数据集的数据流语言。允许在运行时定义的架构。 PigServer(Java API)允许以编程方式访问。
  7. 注意:我假设您尝试阅读的数据已经存在于HDFS中。但是,Hadoop生态系统中的某些产品可能对您的应用程序有用或作为一般参考,因此我将它们包括在内。

答案 2 :(得分:0)

如果你只是想从HDFS获取数据,那么是的,你可以通过Hive来实现。 但是,如果您的数据已经组织好(例如,在列中),您将从中获益最多。

让我们举一个例子:map-reduce作业生成了一个名为wordcount.csv的csv文件,其中包含两行:word和count。这个csv文件在HDFS上。

现在让我们假设你想知道“gloubiboulga”这个词的出现。您可以通过以下代码简单地实现此目的:

CREATE TABLE data
(
  word STRING,
  count INT,
  text2 STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

LOAD DATA LOCAL INPATH '/wordcount.csv'
OVERWRITE INTO TABLE data;   

select word, count from data where word=="gloubiboulga";

请注意,虽然这种语言看起来非常像SQL,但您仍需要了解一些相关内容。