1. 前言
在之前找BUG的过程中,查看了元数据库中的DBS表和SDS表,灰常滴感兴趣,所以逐个查了一下。
2. 如何访问元数据库中的表
- 首先进入mysql,然后选择使用所创建的元数据库
- 然后查看总共有几个元数据表
可以清楚的看到总共有30几个表。
3. 分析各表作用
首先先来个简要分析:
表名 | 作用 |
---|---|
BUCKETING_COLS | 存储bucket字段信息,通过SD_ID与其他表关联 |
CDS | 一个字段CD_ID,与SDS表关联 |
COLUMNS_V2 | 存储字段信息,通过CD_ID与其他表关联 |
DATABASE_PARAMS | 存储数据库的相关参数 |
DBS | 存储hive的database信息 |
FUNCS | 用户注册的函数信息 |
FUNC_RU | 用户注册函数的资源信息 |
GLOBAL_PRIVS | 存储全局变量 |
IDXS | 索引表,存储Hive索引相关的元数据 |
INDEX_PARAMS | 索引相关的属性信息 |
PARTITIONS | 分区记录,SD_ID,TBL_ID关联 |
PARTITION_KEYS | 存储分区字段,TBL_ID关联 |
PARTITION_KEY_VALS | 分区的值,通过PART_ID关联。与PARTITION_KEYS共用INTEGER_IDX来标示不同的分区字段 |
PARTITION_PARAMS | 存储某分区相关信息,包括文件数,文件大小,记录条数等PART_ID关联 |
PART_COL_PRIVS | 分区字段的权限信息 |
PART_COL_STATS | 分区字段的统计信息 |
PART_PRIVS | 分区的授权信息 |
ROLES | 角色表,和GLOBAL_PRIVS配合 |
SDS | 存储对应文件的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。TBLS表中的SD_ID与该表关联,可以获取Hive表的存储信息。 |
SD_PARAMS | 该表存储Hive存储的属性信息 |
SEQUENCE_TABLE | 存储sqeuence相关信息 |
SERDES | 存储序列化反序列化使用的类 |
SERDE_PARAMS | 序列化反序列化相关信息,通过SERDE_ID关联 |
SKEWED_COL_NAMES | |
SKEWED_COL_VALUE_LOC_MAP | |
SKEWED_STRING_LIST | |
SKEWED_STRING_LIST_VALUES | |
SKEWED_VALUES | |
SORT_COLS | 排序字段,通过SD_ID关联 |
TABLE_PARAMS | 表相关信息 |
TAB_COL_STATS | |
TBLS | 存储Hive表、试图、索引表的基本信息 |
TBL_COL_PRIVS | |
TBL_PRIVS | |
VERSION | 存储hive的版本信息 |
3. 详细分析
先分析之前用到的DBS表和SDS表吧:
- DBS表主要用于存储Hive中所有数据库的基本信息
Field | Type | Comment |
---|---|---|
DB_ID | bigint(20) | 数据库ID |
DESC | varchar(4000) | 数据库描述 |
DB_LOCATION_URI | varchar(4000) | 数据库HDFS路径 |
NAME | varchar(128) | 数据库名 |
OWNER_NAME | varchar(128) | 数据库所有者用户名 |
OWNER_TYPE | varchar(10) | 所有者角色 |
- SDS表
Field | Comment |
---|---|
SD_ID | 存储信息ID |
CD_ID | 字段信息ID |
INPUT_FORMAT | 文件输入格式 |
IS_COMPRESSED | 是否压缩 |
IS_STOREDASSUBDIRECTORIES | 是否以子目录存储 |
LOCATION | HDFS路径 |
NUM_BUCKETS | 分桶 |
OUTPUT_FORMAT | 文件输出格式 |
SERDE_ID | 序列化类ID |