Hive 的数据存储单元结构

简介: Hive 的数据存储单元结构
hive的数据都存储在HDFS,主要是指Hive中的数据模型存储。

Hive中的数据存储单元结构有:数据库Database、表table(内部表table、外部表external table)、分区partition、桶或簇 Buckets or Clusters。

1, 数据库 Database

在HDFS上对应相应的数据存储目录,通过hive的配置文件hive-site.xml的hive.metastore.warehouse.dir属性来配置。通过create database data_name命令创建。与传统的关系型数据库一样,数据库是一个名称空间,作用是避免表、视图、分区、列等的命名冲突。数据库还可用于为用户或用户组实施安全性。

2,表table

与传统的关系型数据库一样,具有相同模式的同质数据单元。每个表在hive中都是Database路径下的一个存储目录,在hive中知道一个表的存储路径可以通过hive命令 desc formatted table_name 显示表的详细信息;

hive的表分为内部表和外部表

内部表:数据由Hive自身管理,存储的位置是hive在hdfs中存在默认的存储路径,即default数据库(默认:/user/hive/warehouse),删除内部表会直接删除元数据(metadata)及存储数据,对内部表的修改会将修改直接同步给元数据。

外部表:数据由HDFS管理,存储的位置由自己指定,可以指定除/user/hive/warehouse以外的路径,删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE
table_name)

3,分区partition

每个表可以有一个或多个分区键,用于确定数据的存储方式。分区除了作为存储单元外,还允许用户有效地识别满足指定条件的行;在hive中,表中的每个partition对应于表下的一个子存储目录。分区键的每个唯一值定义了表的一个分区,分区列(Partition columns)是虚拟列,它们不是数据本身的一部分,而是在加载时派生的。

4,桶或簇 Buckets or Clusters

每个分区中的数据又可以基于表的散列函数值被划分为桶。每个Buckets对应一个存储文件。如果表有分区,文件保存在分区目录下,如果没有分区,文件保存在表目录下。

文章参考链接:https://www.gairuo.com/p/hive-data-units

相关文章
|
3月前
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
34 0
|
4月前
|
SQL 分布式计算 Hadoop
创建hive表并关联数据
创建hive表并关联数据
35 0
|
5月前
|
SQL 存储 HIVE
47 Hive的数据存储
47 Hive的数据存储
32 0
|
6月前
|
SQL Java 大数据
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
224 1
|
7月前
|
SQL 分布式计算 算法
大数据Hive数据查询语言DQL
大数据Hive数据查询语言DQL
59 0
|
7月前
|
SQL 存储 分布式计算
大数据Hive数据操纵语言DML
大数据Hive数据操纵语言DML
103 0
|
7月前
|
SQL 存储 大数据
大数据Hive数据定义语言DDL
大数据Hive数据定义语言DDL
75 0
|
6月前
|
SQL 存储 分布式数据库
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
104 0
|
2月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
4月前
|
SQL 消息中间件 存储
案例:Flume消费Kafka数据保存Hive
案例:Flume消费Kafka数据保存Hive
67 0