我已经开始学习Hadoop了,我知道HDFS提供了分布式存储系统,Mapreduce是用于data processing.Now的,我正在阅读Hadoop生态系统。从Hive的定义来看,它是一个构建在hadoop上的数据仓库,用于提供类似SQL的接口。
我的问题是,当hadoop提供容错、分布式的HDFS时,为什么要使用hive?hive会取代HDFS吗?
hive是否也只提供sql接口或存储?
发布于 2018-07-26 18:12:07
配置单元不会取代HDFS。配置单元为存储在HDFS中的数据提供sql类型的接口。它主要用于查询和分析存储的数据。在某种意义上,Hive实际上消除了许多样板代码,如果使用mapreduce,您将不得不编写这些代码。例如,只需考虑如何在mapreduce中创建不同类型的连接(左、右、桶)或group by子句或任何其他sql子句,您就会得到答案(您的代码行将很容易扩展到100行)。Hive提供了开箱即用的功能。你不需要在mapreduce中编写那些冗长的程序。Hive已经为你做了这件事。
需要注意的是,Hive本身在幕后使用Mapreduce。因此,任何group by、count、join都仅转换为mapreduce作业。不过,您可以将其更改为Tez/Spark。
对于你的第二个问题,hive没有提供任何存储,它只是使用一个数据库(默认是derby,如果你想使用一个不同的数据库,MySQL将是一个很好的选择)作为一个元存储,只是用来存储与表、分区、视图、存储桶等相关的元数据。(元数据包括表的位置、表中存储的数据类型、表的分区信息、创建日期、修改日期等)您可以使用hive创建。
发布于 2018-07-27 04:44:01
在评论中回答你的问题...
Hive可以处理结构化(csv、txt等)数据和半结构化(xml、json、parquet等)。它不能处理非结构化数据,如音频、视频等。
注意:半结构化数据可以在DDL中处理,也可以通过spark放入Hive中。
我鼓励您学习什么是外部表和hive中的托管表。
祝你学习愉快。
https://stackoverflow.com/questions/51533051
复制相似问题