Hive中的元数据信息默认是存储在derby中的,但是derby是单session的,一般都会修改成mysql。

在mysql中的metastore库中存放着hive所有元数据信息的表(如下图)。本文将分别介绍他们各自的用途。

HIve:元数据表结构

VERSION表

存储Hive版本的元数据表,如果该表出现问题,根本进入不了Hive-Cli,会报错”Table ‘hive.version’ doesn’t exist”。

VER_ID SCHEMA_VERSION VERSION_COMMENT
id hive版本 版本说明

Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)

        DBS表:

DB_ID DESC DB_LOCATION_URI NAME OWNER_NAME OWNER_TYPE
id 数据库描述 数据库HDFS路径 数据库名 数据库所有者用户名 所有者角色


       DATABASE_PARAMS表
            该表存储数据库的相关参数,在CREATE DATABASE时候用WITH DBPROPERTIES (property_name=property_value, …)指定的参数。

DB_ID PARAM_KEY PARAM_VALUE
id 参数名 参数值


           DBS和DATABASE_PARAMS这两张表通过DB_ID字段关联。

Hive表和视图相关的元数据表(TBLS、TABLE_PARAMS、TBL_PRIVS)

这三张表通过TBL_ID关联。


    TBLS
        该表中存储Hive表、视图、索引表的基本信息。

TBL_ID CREATE_TIME DB_ID LAST_ACCESS_TIME OWNER RETENTION SD_ID TBL_NAME TBL_TYPE VIEW_EXPANDED_TEXT VIEW_ORIGINAL_TEXT
id 创建时间 对应dbs中的DB_ID 上次访问时间 所有者 保留字段 序列化配置信息,对应SDS表中的SD_ID 表名 表类型 视图的详细HQL语句 视图的原始HQL语句


    TABLE_PARAMS
        该表存储表/视图的属性信息。

TBL_ID PARAM_KEY PARAM_VALUE
id 参数名 参数值


    TBL_PRIVS
        该表存储表/视图的授权信息

TBL_GRANT_ID CREATE_TIME GRANT_OPTION GRANTOR GRANTOR_TYPE PRINCIPAL_NAME PRINCIPAL_TYPE TBL_PRIV TBL_ID
id 授权时间 0 授权执行用户 授权者类型 被授权用户 被授权用户类型 权限 表ID 


Hive文件存储信息相关的元数据表(SDS、SD_PARAMS、SERDES、SERDE_PARAMS)


由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。


SDS
该表保存文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。
TBLS表中的SD_ID与该表关联,可以获取Hive表的存储信息。

SD_ID CD_ID INPUT_FORMAT IS_COMPRESSED IS_STOREDASSUBDIRECTORIES LOCATION NUM_BUCKETS OUTPUT_FORMAT SERDE_ID
id id 文件输入格式 是否压缩 是否以子目录存储 路径 分桶数 文件输出格式 序列化类


SD_PARAMS
该表存储Hive存储的属性信息,在创建表时候使用STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。

SD_ID PARAM_KEY PARAM_VALUE
id 参数名 参数值


SERDES
该表存储序列化使用的类信息

SERDE_ID NAME SLIB
id 序列化类别名 序列化类


SERDE_PARAMS
该表存储序列化的一些属性、格式信息,比如:行、列分隔符

SERDE_ID PARAM_KEY SLIB
id 属性名 属性值


Hive表字段相关的元数据表(COLUMNS_V2)


COLUMNS_V2
该表存储表对应的字段信息。

CD_ID COMMENT COLUMN_NAME TYPE_NAME INTEGER_IDX
id 字段注释 字段名 字段类型 字段顺序


Hive表分区相关的元数据表(PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS)


PARTITIONS
该表存储表分区的基本信息。

PART_ID CREATE_TIME LAST_ACCESS_TIME PART_NAME SD_ID TBL_ID
id 分区创建时间 最后一次访问时间  分区名 分区存储ID 表ID



PARTITION_KEYS
该表存储分区的字段信息。

TBL_ID PKEY_COMMENT PKEY_NAME PKEY_TYPE INTEGER_IDX
id 分区字段说明  分区字段名 分区字段类型 分区字段顺序


PARTITION_KEY_VALS
该表存储分区字段值。

PART_ID PART_KEY_VAL INTEGER_IDX
id 分区字段值 分区字段值顺序


PARTITION_PARAMS
该表存储分区的属性信息。

PART_ID PARAM_KEY PARAM_VALUE
id 分区属性名 分区属性值

 

其他不常用的表

表名 作用
DB_PRIVS 数据库权限信息表。通过GRANT语句对数据库授权后,将会在这里存储。
IDXS 索引表,存储Hive索引相关的元数据
INDEX_PARAMS 索引相关的属性信息
TAB_COL_STATS 表字段的统计信息。使用ANALYZE语句对表字段分析后记录在这里
TBL_COL_PRIVS 表字段的授权信息
PART_PRIVS 分区的授权信息
PART_COL_STATS 分区字段的统计信息
PART_COL_PRIVS 分区字段的权限信息
FUNCS 用户注册的函数信息
FUNC_RU  用户注册函数的资源信息

 

关系图:

HIve:元数据表结构

相关文章: