我是hadoop新手。我在我的数据上运行了一个map reduce,现在我想查询它,这样我就可以把它放到我的网站上。apache hive是最好的方法吗?我将非常感谢任何帮助。
lvmkulzt1#
欢迎使用hadoop!我强烈建议您阅读cloudera essentials for apache hadoop |第5章:hadoop生态系统,并熟悉从hdfs集群传入和传出数据的不同方法。这段视频很容易观看,并且描述了每种工具的优缺点,但是这个概要应该为您提供hadoop生态系统的基础知识:flume—数据集成和将平面文件导入hdfs。设计用于异步数据流(例如,日志文件)。分布式、可扩展和可扩展。支持各种端点。允许在加载到hdfs之前对数据进行预处理。sqoop-结构化数据(rdbms)和hdfs的双向传输。允许增量导入到hdfs。rdbms必须支持jdbc或odbc。与hadoop类似的hive-sql接口。需要表结构。需要jdbc和/或odbc。hbase—允许交互式访问hdfs。位于hdfs之上并对数据应用结构。允许随机读取,可通过集群水平扩展。不是完整的查询语言;仅允许get/put/scan操作(可与hive和/或impala一起使用)。仅对数据进行行键索引。不使用map-reduce范式。impala—类似于hive,它是一个高性能的sql引擎,用于查询存储在hdfs中的大量数据。不使用map reduce。很好的Hive替代品。pig—用于转换大型数据集的数据流语言。允许在运行时选择性地定义架构。pigserver(javaapi)允许编程访问。注意:我假设您试图读取的数据已经存在于hdfs中。但是,hadoop生态系统中的一些产品可能对您的应用程序或作为一般参考有用,因此我将它们包括在内。
flvlnr442#
如果您只想从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,但是您仍然需要学习一些关于它的知识。
nwlls2ji3#
请记住,hive是一个批处理系统,它将sql语句转换成一堆mapreduce作业,中间包含stage构建。此外,hive是一个高延迟系统,即根据数据集的大小,处理复杂的查询需要几分钟到几小时甚至几天的时间。因此,如果您想在您的网站中提供mapreduce作业输出的结果,强烈建议您使用sqoop将结果导出回rdbms,然后从那里获取结果。或者,如果数据本身很大,无法导出回rdbms。然后,您可以考虑的另一个选择是使用像hbase这样的nosql系统。
3条答案
按热度按时间lvmkulzt1#
欢迎使用hadoop!
我强烈建议您阅读cloudera essentials for apache hadoop |第5章:hadoop生态系统,并熟悉从hdfs集群传入和传出数据的不同方法。这段视频很容易观看,并且描述了每种工具的优缺点,但是这个概要应该为您提供hadoop生态系统的基础知识:
flume—数据集成和将平面文件导入hdfs。设计用于异步数据流(例如,日志文件)。分布式、可扩展和可扩展。支持各种端点。允许在加载到hdfs之前对数据进行预处理。
sqoop-结构化数据(rdbms)和hdfs的双向传输。允许增量导入到hdfs。rdbms必须支持jdbc或odbc。
与hadoop类似的hive-sql接口。需要表结构。需要jdbc和/或odbc。
hbase—允许交互式访问hdfs。位于hdfs之上并对数据应用结构。允许随机读取,可通过集群水平扩展。不是完整的查询语言;仅允许get/put/scan操作(可与hive和/或impala一起使用)。仅对数据进行行键索引。不使用map-reduce范式。
impala—类似于hive,它是一个高性能的sql引擎,用于查询存储在hdfs中的大量数据。不使用map reduce。很好的Hive替代品。
pig—用于转换大型数据集的数据流语言。允许在运行时选择性地定义架构。pigserver(javaapi)允许编程访问。
注意:我假设您试图读取的数据已经存在于hdfs中。但是,hadoop生态系统中的一些产品可能对您的应用程序或作为一般参考有用,因此我将它们包括在内。
flvlnr442#
如果您只想从hdfs获取数据,那么是的,您可以通过hive来实现。但是,如果您的数据已经组织好了(例如,在列中),您将从中受益匪浅。
举个例子:map reduce作业生成了一个名为wordcount.csv的csv文件,其中包含两行:word和count。此csv文件位于hdfs上。
现在假设你想知道“gloubiboulga”这个词的出现。您只需通过以下代码即可实现这一点:
请注意,虽然这种语言看起来非常像sql,但是您仍然需要学习一些关于它的知识。
nwlls2ji3#
请记住,hive是一个批处理系统,它将sql语句转换成一堆mapreduce作业,中间包含stage构建。此外,hive是一个高延迟系统,即根据数据集的大小,处理复杂的查询需要几分钟到几小时甚至几天的时间。
因此,如果您想在您的网站中提供mapreduce作业输出的结果,强烈建议您使用sqoop将结果导出回rdbms,然后从那里获取结果。
或者,如果数据本身很大,无法导出回rdbms。然后,您可以考虑的另一个选择是使用像hbase这样的nosql系统。