cdh版本的hive元数据表可能和apache hive有一定区别,不过大同小异,在这里介绍 1.1.0-cdh5.12.0版本的hive元数据表。hive元数据存储在mysql的metastore库里。以_PRIVS结尾的权限信息相关表都需要在hive里使用grant授权才会产生,如果结合sentry来做权限信息,相关数据不会保存在这里,而是保存到了sentry的元数据库里。要想做元数据管理,可以通过以下这些表做关联查询查到需要的信息。
1. 常用表概览
| 表名 | 描述 | 
| BUCKETING_COLS | 表bucket字段信息 | 
| CDS | 表字段id,单个字段,CD_ID | 
| COLUMNS_V2 | 表字段相关的信息 | 
| DATABASE_PARAMS | 数据库的属性信息 | 
| DBS | 数据库信息 | 
| DB_PRIVS | 数据库权限信息,通过GRANT语句对数据库授权后,将会在这里存储 | 
| FUNCS | 用户注册的函数信息 | 
| FUNC_RU | 用户注册函数的资源信息,比如jar包等 | 
| GLOBAL_PRIVS | 全局权限信息 | 
| IDXS | 索引相关的信息 | 
| INDEX_PARAMS | 索引相关的属性信息 | 
| PARTITIONS | 分区信息 | 
| PARTITION_KEYS | 分区字段列 | 
| PARTITION_KEY_VALS | 分区的值 | 
| PARTITION_PARAMS | 分区属性信息,比如文件数、文件大小、记录数等 | 
| PART_COL_PRIVS | 分区字段的权限信息 | 
| PART_COL_STATS | 分区字段的统计信息 | 
| PART_PRIVS | 分区的权限信息 | 
| ROLES | 角色表 | 
| ROLE_MAP | 角色映射表 | 
| SDS | 表存储的相关信息,比如文件格式、位置、压缩、序列化等信息 | 
| SD_PARAMS | 表存储的属性,STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。 | 
| SEQUENCE_TABLE | sqeuence相关信息 | 
| SERDES | 列化反序列化使用的类信息 | 
| SERDE_PARAMS | 序列化反序列化的属性 | 
| SKEWED_COL_NAMES | 倾斜列名信息,建表时指定了SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) | 
| SKEWED_COL_VALUE_LOC_MAP | 倾斜列的位置映射 | 
| SKEWED_STRING_LIST | 保存了SKEWED_STRING_LIST_VALUES的id值 | 
| SKEWED_STRING_LIST_VALUES | 保存了倾斜列的值 | 
| SKEWED_VALUES | 保存了SDS的SD_ID和SKEWED_STRING_LIST_VALUES的STRING_LIST_ID映射关系 | 
| SORT_COLS | 排序字段,包含字段名、排序方式等 | 
| TABLE_PARAMS | 表属性相关信息 | 
| TAB_COL_STATS | 表中字段的统计信息 | 
| TBLS | 表相关信息 | 
| TBL_COL_PRIVS | 表中字段的权限信息 | 
| TBL_PRIVS | 表权限信息 | 
| VERSION | hive版本 | 
2. 存储Hive版本相关的元数据表
VERSION
+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| VER_ID            | bigint(20)   | NO   | PRI | NULL    |       |
| SCHEMA_VERSION    | varchar(127) | NO   |     | NULL    | hive版本
| VERSION_COMMENT   | varchar(255) | YES  |     | NULL    |       |
| SCHEMA_VERSION_V2 | varchar(255) | YES  |     | NULL    |       |
+-------------------+--------------+------+-----+---------+-------+3. Hive数据库相关的元数据表
DBS
DBS-存储Hive中所有数据库的基本信息
+-----------------+---------------+------+-----+---------+-------+
| Field           | Type          | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| DB_ID           | bigint(20)    | NO   | PRI | NULL    | 数据库id      
| DESC            | varchar(4000) | YES  |     | NULL    | 数据库描述      
| DB_LOCATION_URI | varchar(4000) | NO   |     | NULL    | 数据库HDFS路径      
| NAME            | varchar(128)  | YES  | UNI | NULL    | 数据库名      
| OWNER_NAME      | varchar(128)  | YES  |     | NULL    | 数据库所有者用户名      
| OWNER_TYPE      | varchar(10)   | YES  |     | NULL    | 所有者角色      
+-----------------+---------------+------+-----+---------+-------+DATABASE_PARAMS
DATABASE_PARAMS-存储数据库的属性
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| DB_ID       | bigint(20)    | NO   | PRI | NULL    | 数据库id      
| PARAM_KEY   | varchar(180)  | NO   | PRI | NULL    | 属性名      
| PARAM_VALUE | varchar(4000) | YES  |     | NULL    | 属性值      
+-------------+---------------+------+-----+---------+-------+DB_PRIVS
DB_PRIVS-存储数据库的权限相关信息
+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| DB_GRANT_ID    | bigint(20)   | NO   | PRI | NULL    | 库授权id      
| CREATE_TIME    | int(11)      | NO   |     | NULL    | 创建时间      
| DB_ID          | bigint(20)   | YES  | MUL | NULL    | 数据库id      
| GRANT_OPTION   | smallint(6)  | NO   |     | NULL    | 授权操作      
| GRANTOR        | varchar(128) | YES  |     | NULL    | 授权人      
| GRANTOR_TYPE   | varchar(128) | YES  |     | NULL    | 授权人类型      
| PRINCIPAL_NAME | varchar(128) | YES  |     | NULL    | PRINCIPAL名      
| PRINCIPAL_TYPE | varchar(128) | YES  |     | NULL    | PRINCIPAL类型      
| DB_PRIV        | varchar(128) | YES  |     | NULL    | 权限      
+----------------+--------------+------+-----+---------+-------+DBS和 DATABASE_PARAMS 这两张表通过DB_ID字段关联。
4. Hive表和视图相关的元数据表
TBLS
TBLS-存储Hive表、视图、索引表的基本信息
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| TBL_ID             | bigint(20)   | NO   | PRI | NULL    | 表id      
| CREATE_TIME        | int(11)      | NO   |     | NULL    | 创建时间      
| DB_ID              | bigint(20)   | YES  | MUL | NULL    | 数据库id      
| LAST_ACCESS_TIME   | int(11)      | NO   |     | NULL    | 上次访问时间      
| OWNER              | varchar(767) | YES  |     | NULL    | 所有者      
| RETENTION          | int(11)      | NO   |     | NULL    | 保留字段      
| SD_ID              | bigint(20)   | YES  | MUL | NULL    | 序列化表id,对应SDS表中的SD_ID      
| TBL_NAME           | varchar(128) | YES  | MUL | NULL    | 表名      
| TBL_TYPE           | varchar(128) | YES  |     | NULL    | 表类型      
| VIEW_EXPANDED_TEXT | mediumtext   | YES  |     | NULL    | 视图的详细HQL语句      
| VIEW_ORIGINAL_TEXT | mediumtext   | YES  |     | NULL    | 视图的原始HQL语句	      
| LINK_TARGET_ID     | bigint(20)   | YES  | MUL | NULL    |       
+--------------------+--------------+------+-----+---------+-------+TABLE_PARAMS
TABLE_PARAMS-存储表/视图的属性信息
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| TBL_ID      | bigint(20)    | NO   | PRI | NULL    | 表id      
| PARAM_KEY   | varchar(256)  | NO   | PRI | NULL    | 属性名      
| PARAM_VALUE | varchar(4000) | YES  |     | NULL    | 属性值      
+-------------+---------------+------+-----+---------+-------+TBL_PRIVS
TBL_PRIVS-存储表/视图的授权信息
+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| TBL_GRANT_ID   | bigint(20)   | NO   | PRI | NULL    | 表授权id      
| CREATE_TIME    | int(11)      | NO   |     | NULL    | 创建时间      
| GRANT_OPTION   | smallint(6)  | NO   |     | NULL    | 授权操作      
| GRANTOR        | varchar(128) | YES  |     | NULL    | 授权人      
| GRANTOR_TYPE   | varchar(128) | YES  |     | NULL    | 授权人类型      
| PRINCIPAL_NAME | varchar(128) | YES  |     | NULL    | PRINCIPAL名      
| PRINCIPAL_TYPE | varchar(128) | YES  |     | NULL    | PRINCIPAL类型      
| TBL_PRIV       | varchar(128) | YES  |     | NULL    | 权限信息      
| TBL_ID         | bigint(20)   | YES  | MUL | NULL    | 表id      
+----------------+--------------+------+-----+---------+-------+TBLS、TABLE_PARAMS、TBL_PRIVS这几张表通过TBL_ID关联
5. Hive表字段相关的元数据表
CDS
CDS-只有一个字段,字段id
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| CD_ID | bigint(20) | NO   | PRI | NULL    | 字段id      
+-------+------------+------+-----+---------+-------+COLUMNS_V2
COLUMNS_V2-存储表对应的字段信息
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| CD_ID       | bigint(20)    | NO   | PRI | NULL    | 字段信息id,对应CDS表      
| COMMENT     | varchar(256)  | YES  |     | NULL    | 字段注释      
| COLUMN_NAME | varchar(128)  | NO   | PRI | NULL    | 字段名      
| TYPE_NAME   | varchar(4000) | YES  |     | NULL    | 字段类型      
| INTEGER_IDX | int(11)       | NO   |     | NULL    | 字段顺序      
+-------------+---------------+------+-----+---------+-------+6. Hive表分区相关的元数据表
PARTITIONS
PARTITIONS-存储表分区的基本信息
+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| PART_ID          | bigint(20)   | NO   | PRI | NULL    | 分区id      
| CREATE_TIME      | int(11)      | NO   |     | NULL    | 创建时间      
| LAST_ACCESS_TIME | int(11)      | NO   |     | NULL    | 上次访问时间      
| PART_NAME        | varchar(767) | YES  | MUL | NULL    | 分区名      
| SD_ID            | bigint(20)   | YES  | MUL | NULL    | 存储信息id,对应SDS的SD_ID      
| TBL_ID           | bigint(20)   | YES  | MUL | NULL    | 表id      
| LINK_TARGET_ID   | bigint(20)   | YES  | MUL | NULL    |       
+------------------+--------------+------+-----+---------+-------+PARTITION_KEYS
PARTITION_KEYS-存储分区的字段信息
+--------------+---------------+------+-----+---------+-------+
| Field        | Type          | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+-------+
| TBL_ID       | bigint(20)    | NO   | PRI | NULL    | 表id      
| PKEY_COMMENT | varchar(4000) | YES  |     | NULL    | 分区字段注释      
| PKEY_NAME    | varchar(128)  | NO   | PRI | NULL    | 分区字段名      
| PKEY_TYPE    | varchar(767)  | NO   |     | NULL    | 分区字段类型      
| INTEGER_IDX  | int(11)       | NO   |     | NULL    | 分区字段顺序      
+--------------+---------------+------+-----+---------+-------+PARTITION_KEY_VALS
PARTITION_KEY_VALS-存储分区字段值
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| PART_ID      | bigint(20)   | NO   | PRI | NULL    | 分区id      
| PART_KEY_VAL | varchar(256) | YES  |     | NULL    | 分区字段值      
| INTEGER_IDX  | int(11)      | NO   | PRI | NULL    | 分区字段顺序      
+--------------+--------------+------+-----+---------+-------+PARTITION_PARAMS
PARTITION_PARAMS-存储分区的属性信息
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| PART_ID     | bigint(20)    | NO   | PRI | NULL    | 分区id      
| PARAM_KEY   | varchar(256)  | NO   | PRI | NULL    | 分区属性名      
| PARAM_VALUE | varchar(4000) | YES  |     | NULL    | 分区属性值      
+-------------+---------------+------+-----+---------+-------+PARTITIONS、PARTITION_KEY_VALS、PARTITION_PARAMS这几张表通过PART_ID关联
7. Hive文件存储信息相关的元数据表
SDS
SDS-保存文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。
+---------------------------+---------------+------+-----+---------+-------+
| Field                     | Type          | Null | Key | Default | Extra |
+---------------------------+---------------+------+-----+---------+-------+
| SD_ID                     | bigint(20)    | NO   | PRI | NULL    | 存储信息id,对应SDS的SD_ID      
| CD_ID                     | bigint(20)    | YES  | MUL | NULL    | 字段id,对应CDS的CD_ID      
| INPUT_FORMAT              | varchar(4000) | YES  |     | NULL    | 文件输入格式      
| IS_COMPRESSED             | bit(1)        | NO   |     | NULL    | 是否压缩      
| IS_STOREDASSUBDIRECTORIES | bit(1)        | NO   |     | NULL    | 是否以子目录存储      
| LOCATION                  | varchar(4000) | YES  |     | NULL    | hdfs路径      
| NUM_BUCKETS               | int(11)       | NO   |     | NULL    | 分桶数      
| OUTPUT_FORMAT             | varchar(4000) | YES  |     | NULL    | 文件输出格式       
| SERDE_ID                  | bigint(20)    | YES  | MUL | NULL    | 序列化id,对应SERDES的SERDE_ID      
+---------------------------+---------------+------+-----+---------+-------+SD_PARAMS
SD_PARAMS-存储Hive存储的属性信息
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| SD_ID       | bigint(20)    | NO   | PRI | NULL    | 存储信息id      
| PARAM_KEY   | varchar(256)  | NO   | PRI | NULL    | 属性名      
| PARAM_VALUE | varchar(4000) | YES  |     | NULL    | 属性值      
+-------------+---------------+------+-----+---------+-------+SERDES
SERDES-存储序列化使用的类信息
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| SERDE_ID | bigint(20)    | NO   | PRI | NULL    | 序列化id     
| NAME     | varchar(128)  | YES  |     | NULL    | 序列化类别名     
| SLIB     | varchar(4000) | YES  |     | NULL    | 序列化类     
+----------+---------------+------+-----+---------+-------+
SERDE_PARAMS
SERDE_PARAMS-存储序列化的属性
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| SERDE_ID    | bigint(20)    | NO   | PRI | NULL    | 序列化id      
| PARAM_KEY   | varchar(256)  | NO   | PRI | NULL    | 属性名      
| PARAM_VALUE | varchar(4000) | YES  |     | NULL    | 属性值      
+-------------+---------------+------+-----+---------+-------+