Hive元数据不存放在Hdfs上,而是存放在RDBMS上,典型的如Mysql、Derby等。
Mysql元数据库
查看元数据库
use hive; //使用 hive 数据库库
show tables;
mysql> show tables;
+---------------------------+
| Tables_in_hive |
+---------------------------+
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| DATABASE_PARAMS |
| DBS |
| FUNCS |
| FUNC_RU |
| GLOBAL_PRIVS |
| IDXS |
| INDEX_PARAMS |
| PARTITIONS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| PART_COL_PRIVS |
| PART_COL_STATS |
| PART_PRIVS |
| ROLES |
| 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 |
| VERSION |
+---------------------------+
元数据表说明
表名 | 表说明 | 关联键 |
COLUMNS_V2 | Hive表字段信息(字段注释,字段名,字段类型,字段序号) | CD_ID |
DBS | 元数据库信息(数据库描述、数据库LOCATION_URI,名称等) | |
PARTITIONS | Hive表分区信息 | |
PARTITION_KEYS | Hive分区表分区键 | |
PARTITION_KEY_VALS | Hive表分区名(键值) | |
SDS | 所有hive表、表分区所对应的hdfs数据目录和数据格式 | SD_ID,CD_ID |
SEQUENCE_TABLE | Hive序列信息(序列名称,序列值) | |
SERDE_PARAM | 序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等 | |
TABLE_PARAMS | 表级属性,如是否外部表,表注释等 | |
TBLS | hive表的基本信息 |
Hive创建表过程
解析用户提交hive语句,对其进行解析,分解为表、字段、分区等hive对象;
根据解析到的信息构建对应的表、字段、分区等对象,从SEQUENCE_TABLE中获取构建对象的最新ID,与构建对象信息(名称,类型等)一同通过DAO方法写入到元数据表中去,成功后将SEQUENCE_TABLE中对应的最新ID+5。