认识Hive,打好核心基础!

一、认识Hive

  1. 什么是Hive?

Hive是基于Hadoop的一个数据仓库的工具,能将数据库文件映射为一张数据库表,提供SQL查询功能,将SQL语句转换为MapReduce任务运行,用来进行数据提取转化加载(ETL),是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
简而言之,Hive就是类似与Mysql一样的Hadoop工具

  1. 那么学习Hive是为了什么呢?
    因为使用Hadoop的MapReduce进行数据处理时面临着人员学习成本太高、项目周期要求太短、实现复杂逻辑开发难度太大的问题,故而开发Hive。这也侧面说明的我们使用Hive的原因。
    总结就是:提供了快速开发的能力,避免了写MapReduce,减少了开发人员的学习成本,而且扩展功能很方便。
    拥有其不能忽视的特点:

  2. Hive可以自由扩展集群的规模。

  3. Hive支持用户自定义函数,由用户的特定需求来执行自己的自定义函数。

  4. 容错性良好,即使节点没有连接成功,SQL语句仍然可以执行。

  5. Hive架构图
    在这里插入图片描述
    基本构成:

  6. 主要接口:CLI、Client、HWI(HIver Web Interface)

  7. Hive将元数据存储在数据库中。

  8. 解释器、编译器、优化器完成HQL查询语句从分析到编译、优化到查询计划的生成。

  9. Hive的数据存储在HDFS中,大部分查询计算由MapReduce来完成,包含*的select查询不会生成MapReduce任务

二、Hive的应用场景与传统关系型数据库的对比

Hive RDMS
查询语言 HQL SQL
数据存储 HDFS Raw Device or Local FS
执行 MapReduce Executor
执行延迟
处理数据规模
索引 0.8版本后加入 有复杂的索引

所以显然的是hive只适合做批量数据统计分析

三、Hive数据存储类型

Hive包含以下数据类型:

  1. db:在HDFS中表现为${hive.metastore.warehouse.dir}目录下的一个文件夹
  2. table:在HDFS中表现为所属db目录下的一个文件夹
  3. external table:与tadle类似,不过数据存放的位置可以在任意指定路径
  4. partition:在HDFS中表现为table目录下的子目录
  5. bucket:在HDFS中表现为同一个目录下根据hash散列之后的多个文件

猜你喜欢

转载自blog.csdn.net/weixin_42507474/article/details/107226972