Hive metastore表结构
Hive metastore表结构设计分析
Hive metastore主要是描述数据的属性的信息。它是用来支持如存储位置、历史数据、资源查找、文件记录等功能。
DBS表
记录数据库的信息
字段 | 解释 |
---|---|
DB_ID | 数据库的编号,默认的数据库编号为1,如果创建其他数据库的时候,这个字段会自增,主键 |
DESC | 对数据库进行一个简单的介绍 |
DB_LOCATION_URI | 数据库的存放位置,默认是存放在hdfs://ip:9000/user/hive/warehouse,如果是其他数据库,就在后面添加目录,默认位置可以通过参数hive.metastore.warehouse.dir来设置 |
NAME | 数据库的名称 |
OWNER_NAME | 数据库所有者名称 |
OWNER_TYPE | 数据库所有者的类型 |
- DBS 表记录基本的db信息,其中DB_ID为其主键,同时也是FUNC_RU、FUNCS、DB_PRIVS、DATABASE_PARAMS、以及TBLS的外键。一般来说,在hive meta初始化时都会自动创建一个名叫default的库,随后通过业务发展以及数据治理等需求,可进行不同业务域库的划分。
- FUNC 表是用来存储udf的基本信息,一个UDF只能对应一个库下的表。FUNC_RU表,用于存储该udf的类型及指向的路径。
- DB_PRIVS 表记录该DB下的权限记录信息(因为现在更多的集成开源的类似于sentry、range等成熟的权限框架)。
- DATABASE_PARAMS 表记录DB的一些扩展信息,便于进行特殊属性的扩展。
- TBLS 表自然是记录该DB下的所有Table信息。对应唯一的DB_ID。
TBLS表
记录数据表的信息
字段 | 解释 |
---|---|
TBL_ID | 在hive中创建表的时候自动生成的一个id,用来表示,主键 |
CREATE_TIME | 创建的数据表的时间,使用的是时间戳 |
DB_ID | 这个表是在哪个数据库里面 |
LAST_ACCESS_TIME | 最后一次访问的时间戳 |
OWNER | 数据表的所有者 |
RETENTION | 保留时间 |
SD_ID | 标记物理存储信息的id |
TBL_NAME | 数据表的名称 |
TBL_TYPE | 数据表的类型,MANAGED_TABLE, EXTERNAL_TABLE, VIRTUAL_VIEW, INDEX_TABLE |
VIEW_EXPANDED_TEXT | 展开视图文本,非视图为null |
VIEW_ORIGINAL_TEXT | 原始视图文本,非视图为null |
tbl_id为TBLS的主键,同时也是TABLE_PARAMS、TBL_COL_PRIVS、IDXS、TBL_PRIVS、SDS、PARTITIONS、PARTITION_KEYS、TAB_COL_STATS表的外键。
每个TBLS都对应唯一的DB_ID,取决于你在哪个db下创建的表。在创建表写入meta的同时,也会创建相应的物理路径。同时会在SDS表中加入DDL时设置的input output、表的location以及SERDE信息。
TBL_PRIVS、TBL_COL_PRIVS表记录该Hive表的表及列权限认证信息。PARTITIONS表记录该表的DDL分区的信息,对于PARTITION_KEYS以及PARTITION_VALUES都是用于PartName的拼接获取。
PARTITIONS表
PARTITIONS表,它是partition分区存储的元数据信息。Partition表在metastore中是相当重要的表,关系到partition的元数据存取。
字段 | 解释 |
---|---|
PART_ID | 分区的编号 |
CREATE_TIME | 创建分区的时间 |
LAST_ACCESS_TIME | 最近一次访问时间 |
PART_NAME | 分区的名字 |
SD_ID | 存储描述的id |
TBL_ID | 数据表的id |
PART_ID为PARTITIONS表的主键,同时也是PART_COL_STATS、PART_PRIVS、PARTITION_KEY_VALS、PARTITION_PARAMS、DATABASE_PARAMS表的外键。
SDS表
此对象包含有关属于表的数据的物理存储的所有信息,数据表的存储描述
字段 | 解释 |
---|---|
SD_ID | 主键 |
CD_ID | 数据表编号 |
INPUT_FORMAT | 数据输入格式 |
IS_COMPRESSED | 是否对数据进行了压缩 |
IS_STOREDASSUBDIRECTORIES | 是否进行存储在子目录 |
LOCATION | 数据存放位置 |
NUM_BUCKETS | 分桶的数量 |
OUTPUT_FORMAT | 数据的输出格式 |
SERDE_ID | 序列和反序列的信息 |
SDS表主要包含计算引擎运行时需要的input与output 、location路径以及序列化的class信息。SD_ID为该表的主键,同时也是PARTITIONS、BUCKETING_COLS、SKEWD_COL_NAMES、SD_PARAMS、SORT_COLS、SKEWED_VALUES、IDXS的外键。
本文地址:https://blog.csdn.net/ThreeAspects/article/details/107393204
上一篇: 用SpringBoot写一个博客网站
下一篇: 儿子作业爆笑举动