Hive 元数据表简介
作为Hive基础中的基础,Hive中的元数据表还是很有必要mark一下的,hive元数据可以存在Mysql或者postgreSQL等关系型数据库中。元数据表结构基础,不同的文章博客大多大同小异,基本都贴合官网描述,这里直接Mark一下,方便随手对照查看和平时使用。
内容转自hive 元数据表理解,直接对照官网或者参考下面博客:
Hive学习之路 (三)Hive元数据信息对应MySQL数据库表
Hive 元数据表结构详解
Hive的元数据表结构详解
Hive 元数据库表信息
分析Hive表和分区的统计信息(Statistics)
系列文章: Hive系列学习
转自 hive 元数据表理解
hive的元数据存在于mysql中,在mysql中会有一个hive库,存放相应的表,一共53张表。
1、version表
version表存hive的版本信息,该表中数据只有一条,如果存在多条,会造成hive启动不起来。
2、Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)
dbs表:
DB_ID:数据库ID,DESC:数据库描述,DB_LOCATION_URI:数据HDFS路径,NAME:数据库名,OWNER_NAME:数据库所有者用户名,OWNER_TYPE:所有者角色。
3、Hive表和视图相关的元数据表
主要有TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联。
tbls表
tbls表显示表的详细信息,tbl_id为主键,唯一表示该表,里面存放表的创建时间create_time,表所属的库id(DB_ID),表的拥有着(OWNER),SD_ID ,表的名称TBL_NAME,表的类型(TBL_TYPE)表示内部表还是外部表,上图所示为一个内部表。
其中TBL_ID为主键,其中还包括三个外键SD_ID,DB_ID,LIKE_TARGET_ID。
table_params表
该表存放表的一些额外信息,
如表的最后一次ddl时间,表的注释,如果是非分区表还有该表对应着HDFS文件个数,大小,如上图21为非分区表。
4、Hive文件存储信息相关的元数据表
主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS,由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。
SDS:
该表对应的文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。TBLS表中的SD_ID与该表关联,可以获取Hive表的存储信息。
SD_ID 为存储信息id,CD_ID为字段信息id,INPUT_FORMAT为文件输入格式,IS_COMPERSEED:该文件是否压缩,IS_STOREDASSUBDIRECTORIES为是否以子目录存储,LOCATION:为文件对应的HDFS目录,NUM_BUCKETS为分桶数量。OUTPUT_FORMAT:为文件输出格式,SERDE_ID为序列化类ID
SD_PARAMS: 该表存储Hive存储的属性信息,在创建表时候使用STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。
表字段 | 说明 | 示例数据 |
SD_ID | 存储配置ID | 41 |
PARAM_KEY | 存储属性名 | |
PARAM_VALUE | 存储属性值 |
SERDES:该表存储序列化使用的类信息
表字段 | 说明 | 示例数据 |
SERDE_ID | 序列化类配置ID | 41 |
NAME | 序列化类别名 | NULL |
SLIB | 序列化类 | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe |
SERDE_PARAMS:该表存储序列化的一些属性、格式信息,比如:行、列分隔符
表字段 | 说明 | 示例数据 |
SERDE_ID | 序列化类配置ID | 41 |
PARAM_KEY | 属性名 | field.delim |
PARAM_VALUE | 属性值 | | |
5、Hive表分分区相关的元数据表
主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS
partitions表:
PART_ID:分区ID,CREATE_TIME:分区创建时间,LAST_ACCESS_TIME:最后一次访问时间,PART_NAME:分区名,SD_ID:分区存储ID,TBL_ID:表ID
partition_params表:
numfiles:该分区下的文件数,numRows:该分区下记录数,rawDataSize是指原始数据的大小,totalSize是指占用HDFS存储空间大小,transient_lastDdlTime最后一次ddl时间。
partition_keys表:
TBL_ID:表ID,PKEY_COMMENT:分区字段说明,PKEY_NAME:分区字段名,PKEY_TYPE:分区字段类型,INTEGER_IDX:分区字段顺序 。
partition_key_vals表:
PART_ID:分区ID,PART_KEY_VAL:分区字段值,INTEGER_IDX:分区字段值顺序
6、字段相关的元数据表 cds和columns_v2 ,通过CD_ID关联
CD_ID:字段信息ID,COMMENT:字段注释,COLUMN_NAME:字段名,TYPE_NAME:字段类型,INTEGER_IDX:字段顺序
7、桶元数据表 bucketing_cols
别的后续再补充。
参考博客:https://blog.csdn.net/haozhugogo/article/details/73274832