【问题标题】:Why Hive when HDFS already provide data storage?当 HDFS 已经提供数据存储时,为什么要使用 Hive?
【发布时间】:2018-07-26 07:15:15
【问题描述】:

我已经开始学习Hadoop了。我知道HDFS提供分布式存储系统,而Mapreduce是用于数据处理的。现在我正在阅读Hadoop生态系统。 从 Hive 的定义来看,它是一个基于 hadoop 构建的数据仓库,提供类似 SQL 的接口。

我的问题是,当 hadoop 提供容错的 HDFS 时,为什么是分布式的? Hive 会取代 HDFS 吗?

hive 是否也只提供 sql 接口或存储?

【问题讨论】:

    标签: hadoop hive hdfs


    【解决方案1】:

    Hive 不会取代 HDFS。 Hive 为存储在 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 创建的表、分区、视图、存储桶等(元数据类似于表的位置、存储在表中的数据类型、表的分区信息、创建日期、修改日期等)。

    【讨论】:

    • hive 可以处理非结构化数据吗?
    【解决方案2】:

    在评论中回答您的问题...

    Hive 可以处理结构化(csv、txt 等)数据和半结构化(xml、json、parquet 等)数据。它无法处理音频、视频等非结构化数据。

    注意:半结构化数据可以在 DDL 中处理,也可以通过 spark 放入 Hive。

    我鼓励您也了解 hive 中的外部表和托管表。

    快乐学习。

    【讨论】:

      猜你喜欢
      • 2011-02-27
      • 1970-01-01
      • 2014-10-08
      • 2016-01-28
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多