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底层的列族名 |

本文介绍了如何使用Java获取和理解MySQL、Hive、HBase数据库的元数据,包括各数据库元数据的存储位置和关键信息,以及Java中获取元数据的方法,如getTables和getColumns等。
最低0.47元/天 解锁文章
498

被折叠的 条评论
为什么被折叠?



