6 Hive 概述

一、Hive 是什么

​ Hive 是构建在 Hadoop 之上的数据仓库平台;它通过 SQL 解析引擎把 SQL 语句转译成 MapReduce 作业,并在 Hadoop 上运行;Hive 表是 HDFS 的文件目录,一个表对应一个目录名,如果有分区,则分区值对应子目录。

二、Hive 架构

在这里插入图片描述

解释图中元素

1、解析器

​ 1)译器:完成 HQL 语句从词法分析、语法分析、编译、优化以及执行计划的生成。

​ 2)优化器:是一个演化组件

​ 3)执行器:舒徐执行所有的 job,如果 task 链不存在依赖关系,可以采用并发执行的方式执行 job。

2、元数据库

​ 元数据用于存放 Hive 库的基础信息,它存在关系数据库中,如 mysql。元素据包括:数据库信息、表名、列表和列的分区及其属性,表的属性,表的数据所在的目录。

三、托管表与外部表

Hive 表分为两类,一个是托管表(内部表),一个是外部表。

托管表是只在 hive 中使用,外部表示 hive 之外也使用,它们下面两个方面有区别:

3.1 数据存储

托管表:数据存储在 hive 仓库目录下,是指定的。我指定为:/apps/hive/warehouse

外部表:外部表可存在 hdfs 的任意目录下。

3.2 数据删除

托管表:删除元数据和数据。

外部表:只删除元数据。

四、分区和桶

4.1 分区

​ 分区其实就是在一个 hdfs 大的文件夹下面的子文件夹,它不是表的上面的结构,分区可以帮助我们来缩小查询的范围从而提高效率。在导入数据的时候,可以根据数据中的特定列把数据放到指定分区中,即指定文件夹中。

4.2 桶

​ 桶是表上面的附加结构,可以提高查效率。桶对应于 MapReduce 的输出文件分区,一个作业产生的桶和 reduce 任务个数相等。

MapReduce 的输出文件分区,一个作业产生的桶和 reduce 任务个数相等。

​ 我个人理解是表对应的是文件夹,分区是文件夹下的子文件夹,而桶就是对应于子文件夹里的文件了,我们把具有相同特征的内容放到一个文件里,即一个桶中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值