我是Hadoop的新手。我运行了一个地图缩小我的数据,现在我想查询它,所以我可以将它放入我的网站。 Apache Hive是最好的方法吗?我非常感谢任何帮助。
答案 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生态系统的基础知识:
注意:我假设您尝试阅读的数据已经存在于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,但您仍需要了解一些相关内容。