Java实现mysql、hive、hbase数据库元数据操作
数据库元数据
元数据(Metadata)是关于数据的数据。元数据是描述数据仓库内数据的结构和建立方法的数据,按用途的不同可分为两类:技术元数据(Technical Metadata)和业务元数据(Business Metadata)。技术元数据是存储关于数据仓库系统技术细节的数据,可用于开发和管理数据仓库,主要包括对数据仓库结构的描述等。业务元数据从业务角度描述了数据仓库中的数据,使得不懂计算机技术的业务人员也能够"读懂"数据仓库中的数据。业务元数据主要包括使用者的业务术语所表达的数据模型、对象名和属性名等。
mysql的元数据
mysql关于表的元数据存储在数据库中自带的information_schema.TABLES表中,下面对表中的部分属性进行解释。
字段名称 | 说明 |
---|---|
TABLE_CATELOG | 数据表登记目录 |
TABLE_SCHEMA | 数据表所属的数据库名 |
TABLE_NAME | 表名称 |
TABLE_TYPE | 表类型(取值:system view |
ENGINE | 使用的数据库引擎(取值:MyISAM |
VERSION | 版本,默认值10 |
ROW_FORMAT | 行格式(Compact |
TABLE_ROWS | 表里所存数据行数 |
AVG_ROW_LENGTH | 平均行长度 |
DATA_LENGTH | 数据长度 |
MAX_DATA_LENGTH | 最大数据长度 |
INDEX_LENGTH | 索引长度 |
DATA_FREE | 空间碎片 |
AUTO_INCREMENT | 做自增主键的自动增量当前值 |
CREATE_TIME | 表的创建时间 |
UPDATE_TIME | 表的更新时间 |
CHECK_TIME | 表的检查时间 |
TABLE_COLLATION | 表的字符校验编码集 |
CHECKSUM | 校验和 |
CREATE_OPTIONS | 创建选项 |
TABLE_COMMENT | 表的注释、备注 |
关于列的元数据存储在information_schema.COLUMNS表中,下面对表中的部分属性进行解释。
字段名称 | 说明 |
---|---|
TABLE_SCHEMA | 表格所属的库 |
TABLE_NAME | 表名 |
COLUMN_NAME | 字段名 |
ORDINAL_POSITION | 字段标识,从1开始 |
COLUMN_DEFAULT | 字段默认值 |
IS_NULLABLE | 字段是否可以为空,取值是YES或NO |
DATA_TYPE | 数据类型 |
CHARACTER_MAXIMUM_LENGTH | 字段的最大字符数 |
CHARACTER_OCTET_LENGTH | 字段的最大字节数 |
NUMERIC_PRECISION | 数字精度,适用于int,float等数字类型 |
NUMERIC_SCALE | 小数位数,适用于int,float等数字类型 |
DATETIME_PRECISION | datetime类型和SQL-92interval类型数据库的子类型代码 |
CHARACTER_SET_NAME | 字段字符集名称,如utf8 |
COLLATION_NAME | 字符集排序规则,如utf8_general_ci |
COLUMN_TYPE | 字段类型,如float(9,3),varchar(50) |
COLUMN_KEY | 索引类型 |
EXTRA | 其他信息,如主键的auto_increment |
PRIVILEGES | 权限,多个权限用逗号隔开 |
COLUMN_COMMENT | 字段注释 |
GENERATION_EXPRESSION | 组合字段的公式 |
hive的元数据
Hive 的元数据信息通常存储在关系型数据库中,下面对部分元数据表及表中字段进行说明。
TBLS表字段说明:
字段名称 | 说明 |
---|---|
TBL_ID | 表ID |
CREATE_TIME | 表的创建时间 |
DB_ID | 数据库ID |
LAST_ACCESS_TIME | 上次访问时间 |
OWNER | 所有者 |
RETENTION | 保留字段 |
SD_ID | 序列化配置信息( 对应SDS表中的SD_ID) |
TBL_NAME | 表名 |
TBL_TYPE | 表的类型 |
VIEW_EXPANDED_TEXT | 视图的详细HQL语句 |
VIEW_ORIGINAL_TEXT | 视图的原始HQL语句 |
TABLE_PARAMS表字段说明:
字段名称 | 说明 |
---|---|
TBL_ID | 表ID(对应TBLS的TBL_ID) |
PARAM_KEY | 属性名 |
PARAM_VALUE | 属性值 |
SDS表字段说明:
字段名称 | 说明 |
---|---|
SD_ID | 存储信息ID(对应TBLS表中的SD_ID ) |
CD_ID | 字段信息ID(对应COLUMN_V2表中的CD_ID) |
INPUT_FORMAT | 文件输入格式 |
IS_COMPRESSED | 是否压缩 |
IS_STOREDASSUBDIRECTORIES | 是否以子目录存储 |
LOCATION | HDFS路径 |
NUM_BUCKETS | 分桶数量 |
OUTPUT_FORMAT | 文件输出格式 |
SERDE_ID | 序列化类ID |
COLUMN_V2表字段说明:
字段名称 | 说明 |
---|---|
CD_ID | 字段信息ID(对应SDS 表CD_ID) |
COMMENT | 字段注释 |
COLUMN_NAME | 字段名 |
TYPE_NAME | 字段类型 |
INTEGER_IDX | 字段顺序 |
hbase的元数据
hbase表中的数据采用rowkey形式存储,与关系型数据模型有些区别。本文使用Phoenix访问hbase。Phoenix是用Java写的基于JDBC API操作HBase的开源SQL引擎,将HBase非关系型形式转换成关系型数据模型。其元数据存储在SYSTEM.CATALOG表中,下面对该表的字段进行说明:
字段名称 | 说明 |
---|---|
TABLE_SCHEM | 表的schema |
TABLE_NAME | 表名 |
COLUMN_NAME | 列名 |
TABLE_TYPE | 表的类型 |
COLUMN_FAMIL | hbase底层的列族名 |