1.什么是元数据?
元数据在Hive中起着关键的作用,它使得Hive能够理解和操作存储在底层存储系统中的数据。以下是一些常见的元数据信息:
1数据库(Database):元数据中包含有关数据库的定义,例如数据库名称、所有者、创建时间等。
2表(Table):每个表都有相应的元数据,包括表名称、列名称、列的数据类型、分区信息、表的存储格式、表的所有者等。
3列(Column):表中每个列都有相关的元数据,包括列名称、数据类型、注释等。
4分区(Partition):对于分区表,元数据包含有关分区的定义和属性,例如分区列、分区值、分区路径等。
5数据类型(Data Types):元数据中记录了各种数据类型的定义,例如整数、字符串、日期等。
6存储格式(Storage Format):Hive支持不同的存储格式,例如文本格式(Text)、序列文件格式(SequenceFile)、列式存储格式(ORC)等。元数据中包含有关表的存储格式的定义和属性。
通过元数据,Hive能够解析查询、优化查询计划以及执行数据操作。元数据通常存储在持久的存储系统中,如关系型数据库(如MySQL、PostgreSQL)或Hive的自定义元数据存储(如Derby)。这些元数据提供了对存储在Hive中的数据的结构和语义的描述,使得Hive可以将SQL-like查询转化为底层存储系统可以理解的操作。
2.Hive表分区相关的元数据表
1.PARTITIONS
该表存储表分区的基本信息。
元数据表字段 | 说明 | 示例数据 |
---|---|---|
PART_ID | 分区ID | 1 |
CREATE_TIME | 分区创建时间 | |
LAST_ACCESS_TIME | 最后一次访问时间 | |
PART_NAME | 分区名 | pt=2015-06-12 |
SD_ID | 分区存储ID | 21 |
TBL_ID | 表ID | 2 |
2.PARTITION_KEYS
该表存储分区的字段信息。
元数据表字段 | 说明 | 示例数据 |
---|---|---|
TBL_ID | 表ID | 2 |
PKEY_COMMENT | 分区字段说明 | |
PKEY_NAME | 分区字段名 | pt |
PKEY_TYPE | 分区字段类型 | string |
INTEGER_IDX | 分区字段顺序 | 1 |
表PARTITION_KEYS通过 TBL_ID(表ID )和TBLS (表的基本信息)TBL_ID(表ID )进行关联
3.PARTITION_KEY_VALS
该表存储分区字段值。
元数据表字段 | 说明 | 示例数据 |
---|---|---|
PART_ID | 分区ID | 2 |
PART_KEY_VAL | 分区字段值 | 2015-06-12 |
INTEGER_IDX | 分区字段值顺序 | 0 |
4 .PARTITION_PARAMS
该表存储分区的属性信息。
元数据表字段 | 说明 | 示例数据 |
---|---|---|
PART_ID | 分区ID | 2 |
PARAM_KEY | 分区属性名 | numFiles、numRows |
PARAM_VALUE | 分区属性值 | 15、502195 |
表之间的关系:
PARTITIONS(存储表分区的基本信息) 的PART_ID(分区ID)、SD_ID(分区存储ID )、TBL_ID(表ID)和其他表相关联
PARTITION_KEYS(该表存储分区的字段信息) 的TBL_ID(表ID)和其他表相关联
PARTITION_KEY_VALS(该表存储分区字段值)通过 PART_ID(分区ID)和其他表相关联
PARTITION_PARAMS(该表存储分区的属性信息)通过 PART_ID(分区ID)和其他表相关联
3.其他不常用的元数据表
1.DB_PRIVS
数据库权限信息表。通过GRANT语句对数据库授权后,将会在这里存储。
2.IDXS
索引表,存储Hive索引相关的元数据
3.INDEX_PARAMS
索引相关的属性信息。
4.TAB_COL_STATS
表字段的统计信息。使用ANALYZE语句对表字段分析后记录在这里。
5.TBL_COL_PRIVS
表字段的授权信息
6.PART_PRIVS
分区的授权信息
7.PART_COL_STATS
分区字段的统计信息。
8.PART_COL_PRIVS
分区字段的权限信息。
9.FUNCS
用户注册的函数信息
10.FUNC_RU
用户注册函数的资源信息