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
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,默认存储位置为