0
点赞
收藏
分享

微信扫一扫

Java实现mysql、hive、hbase数据库元数据操作


  数据库元数据mysql的元数据hive的元数据hbase的元数据

  Java获取元数据Java获取mysql的元数据Java获取hive的元数据Java获取hbase的元数据

  元数据(Metadata)是关于数据的数据。元数据是描述数据仓库内数据的结构和建立方法的数据,按用途的不同可分为两类:技术元数据(Technical Metadata)和业务元数据(Business Metadata)。技术元数据是存储关于数据仓库系统技术细节的数据,可用于开发和管理数据仓库,主要包括对数据仓库结构的描述等。业务元数据从业务角度描述了数据仓库中的数据,使得不懂计算机技术的业务人员也能够"读懂"数据仓库中的数据。业务元数据主要包括使用者的业务术语所表达的数据模型、对象名和属性名等。

  mysql关于表的元数据存储在数据库中自带的information_schema.TABLES表中,下面对表中的部分属性进行解释。

  字段名称说明TABLE_CATELOG数据表登记目录TABLE_SCHEMA数据表所属的数据库名TABLE_NAME表名称TABLE_TYPE表类型(取值:system viewENGINE使用的数据库引擎(取值:MyISAMVERSION版本,默认值10ROW_FORMAT行格式(CompactTABLE_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或NODATA_TYPE数据类型CHARACTER_MAXIMUM_LENGTH字段的最大字符数CHARACTER_OCTET_LENGTH字段的最大字节数NUMERIC_PRECISION数字精度,适用于int,float等数字类型NUMERIC_SCALE小数位数,适用于int,float等数字类型DATETIME_PRECISIONdatetime类型和SQL-92interval类型数据库的子类型代码CHARACTER_SET_NAME字段字符集名称,如utf8COLLATION_NAME字符集排序规则,如utf8_general_ciCOLUMN_TYPE字段类型,如float(9,3),varchar(50)COLUMN_KEY索引类型EXTRA其他信息,如主键的auto_incrementPRIVILEGES权限,多个权限用逗号隔开COLUMN_COMMENT字段注释GENERATION_EXPRESSION组合字段的公式

  Hive 的元数据信息通常存储在关系型数据库中,下面对部分元数据表及表中字段进行说明。

  TBLS表字段说明:

  字段名称说明TBL_ID表IDCREATE_TIME表的创建时间DB_ID数据库IDLAST_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是否以子目录存储LOCATIONHDFS路径NUM_BUCKETS分桶数量OUTPUT_FORMAT文件输出格式SERDE_ID序列化类ID

  COLUMN_V2表字段说明:

  字段名称说明CD_ID字段信息ID(对应SDS 表CD_ID)COMMENT字段注释COLUMN_NAME字段名TYPE_NAME字段类型INTEGER_IDX字段顺序

  hbase表中的数据采用rowkey形式存储,与关系型数据模型有些区别。本文使用Phoenix访问hbase。Phoenix是用Java写的基于JDBC API操作HBase的开源SQL引擎,将HBase非关系型形式转换成关系型数据模型。其元数据存储在SYSTEM.CATALOG表中,下面对该表的字段进行说明:

  字段名称说明TABLE_SCHEM表的schemaTABLE_NAME表名COLUMN_NAME列名TABLE_TYPE表的类型COLUMN_FAMILhbase底层的列族名DATA_TYPE列的数据类型COLUMN_SIZE列的数据长度(一般指char,varchar和decimal的长度)DECIMAL_DIGITSDECIMAL类型的小数长度NULLABLEINTEGER类型的值能否为空COLUMN_DEFVARCHAR类型字段的注解

  getTables方法参数说明:

  catalog:数据库名称。schemaPattern:数据库的登录名。值为 “” 则检索那些没有模式的描述,值为 null 则表示该模式名称不应用于缩小搜索范围。tableNamePattern:表名称。设置为null表示获取所有表信息,设置为特定的表名称则返回该表的具体信息。types:表类型组成的列表,值为null 表示返回所有类型。

  getColumns方法参数说明:

  catalog:数据库名称。schemaPattern:数据库的登录名。值为 “” 则检索那些没有模式的描述,值为 null 则表示该模式名称不应用于缩小搜索范围。tableNamePattern:表名称。设置为null表示获取所有表信息,设置为特定的表名称则返回该表的具体信息。columnNamePattern:列名称。设置为null 表示返回所有类型。

  到此三种数据库的元数据都已获取成功,另外hive数据库的元数据也可以通过访问存储元数据的mysql数据库进行获取,直接访问hive数据库获取元数据的话,由于用户权限问题这里使用describe命令获取元数据。如果有更好的办法欢迎讨论~

举报

相关推荐

0 条评论