Hive元数据解析
本文是笔者初步整理的Hive元数据表,有不准确的地方请轻拍,后续我会补充.
1. Hive 0.11 元数据表汇总
线上Hive 0.11 metastore包括下述39个表,主要分为以下几类 :
Database相关
Table相关
数据存储相关SDS
COLUMN相关
SERDE相关(序列化)
Partition相关(分区)
SKEW相关(数据倾斜)
BUCKET相关(分桶)
PRIVS相关(权限管理)
mysql> show tables;
+---------------------------+
| Tables_in_hive_yz_test |
+---------------------------+
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| DATABASE_PARAMS |
| DBS |
| DB_PRIVS |
| GLOBAL_PRIVS |
| IDXS |
| INDEX_PARAMS |
| NUCLEUS_TABLES |
| PARTITIONS |
| PARTITION_EVENTS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| PART_COL_PRIVS |
| PART_COL_STATS |
| PART_PRIVS |
| ROLES |
| ROLE_MAP |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SKEWED_COL_NAMES |
| SKEWED_COL_VALUE_LOC_MAP |
| SKEWED_STRING_LIST |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES |
| SORT_COLS |
| TABLE_PARAMS |
| TAB_COL_STATS |
| TBLS |
| TBL_COL_PRIVS |
| TBL_PRIVS |
| TYPES |
| TYPE_FIELDS |
| VERSION |
+---------------------------+
39 rows in set (0.00 sec)
2.各个表的含义
2.1 Database表:DBS
描述 该表存储Hive Database的元数据信息,DB_ID是
数据库ID,NAME是库名,DB_LOCATION_URI是
数据库在HDFS中的位置,DESC为数据库的描述信息。
mysql> desc DBS;
+-----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| DB_ID | bigint(20) | NO | PRI | NULL | |
| DESC | varchar(4000) | YES | | NULL | |
| DB_LOCATION_URI | varchar(4000) | NO | | NULL | |
| NAME | varchar(128) | YES | UNI | NULL | |
+-----------------+---------------+------+-----+---------+-------+
例子:acorn_3g数据库的信息如下,表示该库ID为81,路径为hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db
mysql> select * from DBS where NAME='acorn_3g';
+-------+------+-------------------------------------------------------+----------+
| DB_ID | DESC | DB_LOCATION_URI | NAME |
+-------+------+-------------------------------------------------------+----------+
| 81 | NULL | hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db | acorn_3g |
+-------+------+-------------------------------------------------------+----------+
2. 2 Table 表
描述:
TBLS 存储Hive Table的元数据信息,每个表有唯一的TBL_ID
SD_ID外键指向所属的Database,SD_IID关联SDS表的主键。 其中SDS存储列(CD_ID)等信息。TBLS.SD_ID关联SDS.SD_ID, SDS.SD_ID关联CDS.CD_ID,
CDS.CD_ID关联COLUMNS_V2.CD_ID
例子:*acorn_3g.user_act表的信息: TBL_ID为41231,TBL_TYPE为MANAGED_TABLE普通表(若值为EXTERNAL,表示外部表),DB_ID为81,表示隶属DB_ID=81的Database。
mysql> select * from TBLS where TBL_NAME='user_act' and DB_ID=81 \G
*************************** 1. row ***************************
TBL_ID: 41231
CREATE_TIME: 1366188055
DB_ID: 81
LAST_ACCESS_TIME: 0
OWNER: xianbing.liu
RETENTION: 0
SD_ID: 263311
TBL_NAME: user_act
TBL_TYPE: MANAGED_TABLE
VIEW_EXPANDED_TEXT: NULL
VIEW_ORIGINAL_TEXT: NULL
2.3 SDS表(数据存储表)
描述:
SDS表保存了Hive数据仓库所有的HDFS数据文件信息,每个SD_ID唯一标记一个数据存储记录
CD_ID关联COLUMN_V2.CD_ID,指定该数据的字段信息
SERDE_ID关联SERDES.SERDE_ID,指定该数据的序列化信息(如是否是序列化表,DELIMITED字段等)
例子:
根据SDS表找到acorn_3g.user_act表的CD_ID是263311, SERDE_ID是263301,默认存储位置为