Hive元数据, Spark SQL表的元数据,Flink Table 元数据
Hive
Hive的元数据配置信息在 conf/hive-site.xml
中, key值为:
- javax.jdo.option.ConnectionURL , 这里我会一般用Mysql地址
- javax.jdo.option.ConnectionDriverName, 如果是MySQL对应的驱动连接器
- javax.jdo.option.ConnectionUserName
-
- javax.jdo.option.ConnectionPassword
除了数据库连接外, 还要修改几个log存放的位置
- hive.querylog.location 查询过程时的本地log文件存放目录
- hive.exec.local.scratchdir Local scratch space for hive jobs
- hive.downloaded.resources.dir 临时本地目录
-- 数据库地址
<value>jdbc:mysql://127.0.0.1:3306/hive_metastore?createDatabaseIfNotExist=true&useSSL=false</value>
-- 数据库连接器的reference
<value>com.mysql.jdbc.Driver</value>
Hive元数据 表ER关系(MySQL)
(由MySQL Workbench 逆向生成)
核心表: DBS, TBLS,COLS, PARTITIONS
DBS
数据库表, 一个库对应一行DB_ID, 相应的数据库属性信息外连到 DATABASE_PARAMS
表 (dbid + k + v 三元组).
TBLS
TBLS, 表名称和基础信息在这个表, 核心字段
CREATE TABLE `TBLS` (
`TBL_ID` bigint NOT NULL, 表唯一ID
`CREATE_TIME` int NOT NULL,
`DB_ID` bigint DEFAULT NULL, 关联数据库ID
`LAST_ACCESS_TIME` int NOT NULL,
`OWNER` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`RETENTION` int NOT NULL,
`SD_ID` bigint DEFAULT NULL, 序列化与反序列化ID
`TBL_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`TBL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`VIEW_EXPANDED_TEXT` mediumtext,
`VIEW_ORIGINAL_TEXT` mediumtext,
`IS_REWRITE_ENABLED` bit(1) NOT NULL,
PRIMARY KEY (`TBL_ID`),
UNIQUE KEY `UNIQUETABLE` (`TBL_NAME`,`DB_ID`),
KEY `TBLS_N50` (`SD_ID`),
KEY `TBLS_N49` (`DB_ID`),
CONSTRAINT `TBLS_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`),
CONSTRAINT `TBLS_FK2` FOREIGN KEY (`DB_ID`) REFERENCES `DBS` (`DB_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
表类型一共有这几种: MANAGED_TABLE, EXTERNAL_TABLE, INDEX_TABLE, VIRTUAL_VIEW
表的附加信息有 TABLE_PARAMS
TBL_PRIVS
分区有关的表: PARTITIONS, PARTITION_KEYS, PARTITION_KEY_VALS, PARTITION_PARAMS
PART_ID
表示一个分区, 它关联SD_ID, TBL_ID
PARTITION表 存放了分区ID, 存有 SD_ID和TBL_ID
列相关的表 COLUMNS_V2
列明细表
存储有关的表: SDS, SD_PARAMS, SERDES, SERDE_PARAMS
SD_ID
不是 SERDE_ID
缩写, 而是指存储信息
SDS是存储的主表,包含了数据文件输入和输出格式,所在HDFS路径, 有没有压缩, 分桶数量
INPUT_FORMAT, OUTPUT_FORMAT, LOCATION, IS_COMPRESSED, NUM_BUCKETS
SD_PARAMS
是存储的附加信息表, 比如在建表时指定了 STORED BY storage.handler.class.name WITH SERDEPROPERTIES ...
就会产生对应的记录.
在SDS中表外键 SERDE_ID
关联 SERDES表 ---- 存储序列化使用的类信息, 比如常用的:
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe 这个类
SERDE_PARAM
存储列分隔符,列分隔符, 如 field.delim
FUNCS 函数表
执行show functions