`

hive对应mysql 元数据表介绍

    博客分类:
  • hive
 
阅读更多

 

 

 

概述

Hive 的元数据信息通常存储在关系型数据库中,常用MySQL数据库作为元数据库管理。上一篇hive的安装也是将元数据信息存放在MySQL数据库中。

Hive的元数据信息在MySQL数据中有57张表

 



 

 

一、存储Hive版本的元数据表(VERSION)

 VERSION   -- 查询版本信息

该表比较简单,但很重要。

VER_ID SCHEMA_VERSION VERSION_COMMENT
ID主键 Hive版本 版本说明
1 0.13.0 Set by MetaStore

如果该表出现问题,根本进入不了Hive-Cli。

比如该表不存在,当启动Hive-Cli时候,就会报错”Table ‘hive.version’ doesn’t exist”。

二、Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)

1、DBS

DBS     -- 存储Hive中所有数据库的基本信息

元数据表字段 说明 示例数据
DB_ID 数据库ID 2
DESC 数据库描述 测试库
DB_LOCATION_URI 数据库HDFS路径 hdfs://namenode/user/hive/warehouse/lxw1234.db
NAME 数据库名 lxw1234
OWNER_NAME 数据库所有者用户名 lxw1234
OWNER_TYPE 所有者角色 USER

2、DATABASE_PARAMS

DATABASE_PARAMS  --该表存储数据库的相关参数,在CREATE DATABASE时候用

WITH DBPROPERTIES (property_name=property_value, …)指定的参数。

元数据表字段 说明 示例数据
DB_ID 数据库ID 2
PARAM_KEY 参数名 createdby
PARAM_VALUE 参数值 lxw1234

注意:

DBS和DATABASE_PARAMS这两张表通过DB_ID字段关联。

三、Hive表和视图相关的元数据表

主要有TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联。

1、TBLS

 该表中存储Hive表、视图、索引表的基本信息。

 

元数据表字段 说明 示例数据
TBL_ID 表ID 1
CREATE_TIME 创建时间 1436317071
DB_ID 数据库ID 2,对应DBS中的DB_ID
LAST_ACCESS_TIME 上次访问时间 1436317071
OWNER 所有者 liuxiaowen
RETENTION 保留字段 0
SD_ID 序列化配置信息 86,对应SDS表中的SD_ID
TBL_NAME 表名 lxw1234
TBL_TYPE 表类型 MANAGED_TABLE、EXTERNAL_TABLE、INDEX_TABLE、VIRTUAL_VIEW
VIEW_EXPANDED_TEXT 视图的详细HQL语句 select `lxw1234`.`pt`, `lxw1234`.`pcid` from `liuxiaowen`.`lxw1234`
VIEW_ORIGINAL_TEXT 视图的原始HQL语句 select * from lxw1234

2、TABLE_PARAMS

该表存储表/视图的属性信息。

元数据表字段 说明 示例数据
TBL_ID 表ID 1
PARAM_KEY 属性名 totalSize、numRows、EXTERNAL
PARAM_VALUE 属性值 970107336、21231028、TRUE

 3、TBL_PRIVS

 该表存储表/视图的授权信息

元数据表字段 说明 示例数据
TBL_GRANT_ID 授权ID 1
CREATE_TIME 授权时间 1436320455
GRANT_OPTION   0
GRANTOR 授权执行用户 liuxiaowen
GRANTOR_TYPE 授权者类型 USER
PRINCIPAL_NAME 被授权用户 username
PRINCIPAL_TYPE 被授权用户类型 USER
TBL_PRIV 权限 Select、Alter
TBL_ID 表ID 22,对应TBLS表中的TBL_ID

四、Hive文件存储信息相关的元数据表

  主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS

  由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。

1、SDS

  该表保存文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。

  TBLS表中的SD_ID与该表关联,可以获取Hive表的存储信息。

 

元数据表字段 说明 示例数据
SD_ID 存储信息ID 1
CD_ID 字段信息ID 21,对应CDS表
INPUT_FORMAT 文件输入格式 org.apache.hadoop.mapred.TextInputFormat
IS_COMPRESSED 是否压缩 0
IS_STOREDASSUBDIRECTORIES 是否以子目录存储 0
LOCATION HDFS路径 hdfs://namenode/hivedata/warehouse/ut.db/t_lxw
NUM_BUCKETS 分桶数量 5
OUTPUT_FORMAT 文件输出格式 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
SERDE_ID 序列化类ID 3,对应SERDES表

 2、SD_PARAMS

  该表存储Hive存储的属性信息,在创建表时候使用

  STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。

元数据表字段

说明   示例数据
 SD_ID 存储配置ID 
 PARAM_KEY 存储属性名  
 PARAM_VALUE 存储属性值   

 3、SERDES

 该表存储序列化使用的类信息

 

元数据表字段 说明 示例数据
SERDE_ID 序列化类配置ID 1
NAME 序列化类别名  
SLIB 序列化类 org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

 4、SERDE_PARAMS

 该表存储序列化的一些属性、格式信息,比如:行、列分隔符

 

元数据表字段 说明 示例数据
SERDE_ID 序列化类配置ID 1
PARAM_KEY 属性名 field.delim
PARAM_VALUE 属性值 ,

五、Hive表字段相关的元数据表

主要涉及COLUMNS_V2

1、COLUMNS_V2

该表存储表对应的字段信息。

元数据表字段 说明 示例数据
CD_ID 字段信息ID 1
COMMENT 字段注释  
COLUMN_NAME 字段名 pt
TYPE_NAME 字段类型 string
INTEGER_IDX 字段顺序 2

 六、Hive表分区相关的元数据表

主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

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

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

七、其他不常用的元数据表

  • DB_PRIVS

数据库权限信息表。通过GRANT语句对数据库授权后,将会在这里存储。

  • IDXS

索引表,存储Hive索引相关的元数据

  • INDEX_PARAMS

索引相关的属性信息。

  • TAB_COL_STATS

表字段的统计信息。使用ANALYZE语句对表字段分析后记录在这里。

  • TBL_COL_PRIVS

表字段的授权信息

  • PART_PRIVS

分区的授权信息

  • PART_COL_STATS

分区字段的统计信息。

  • PART_COL_PRIVS

分区字段的权限信息。

  • FUNCS

用户注册的函数信息

  • FUNC_RU

用户注册函数的资源信息

 

 

 

 

总结:

常用的几个:

 

SELECT * FROM `dbs`     数据库表 


SELECT * FROM  `tbls`    hive表   db_id表示 数据库id


SELECT * FROM  `sds`  WHERE  cd_id = 23171     cd_id是表id,sds里是表的属性信息,比如:location  分区  input_format 信息 


SELECT * FROM `columns_v2`   WHERE cd_id = 23171   列名表,  cd_id表示 表id,  展示表下所有的列 


SELECT * FROM `partitions`   WHERE tbl_id = 23171   分区表,   tbl_id 表示表id   sd_id表示partition分区的id   每一个分区一个id 

 

 

案例:   

 

 先在表 TBLS中根据表名获取序列化信息a
 然后去 文件存储基本信息表(SDS)中根据a序列化值得到所有的列CD_ID
 然后在去 列表(COLUMNS_V2)中根据上面的列CD_ID获取列名和类型信息 

	    public void mysqlSelect(String act) throws SQLException {
        Connection conn;
    
        String url = "jdbc:mysql://192.168.201.300:3316/hive";
        String user = "hive_read";
        String password = "sdfsfdfddfdfdfdfdf";

        conn = DriverManager.getConnection(url, user, password);
        Statement stmt = conn.createStatement(); //创建Statement对象
        System.out.println("成功连接到数据库!");

        String tbname = "stg_log_" + act;

        String sql = "select COLUMN_NAME,TYPE_NAME from COLUMNS_V2 where CD_ID=(select CD_ID from SDS where SD_ID=(select SD_ID from TBLS where TBL_NAME=" + "'" + tbname + "'));";    //要执行的SQL
        ResultSet rs = stmt.executeQuery(sql);//创建数据对象
        ft.clear();
        while (rs.next()) {
            ft.put(rs.getString(1), rs.getString(2));

        }
        rs.close();
        stmt.close();
        conn.close();
    }

 

String sql = "select COLUMN_NAME from COLUMNS_V2 where CD_ID=  -- 根据 表ID(CD_ID)去表COLUMNS_V2获取列名
(
	select CD_ID from SDS where SD_ID=  -- 根据表序列化ID(SD_ID)去SDS获取表ID(CD_ID)
	(
		select SD_ID from TBLS where TBL_NAME=" + "'" + user + "'"+ "and DB_ID=(21895) -- 根据库名表名获取表主键 
	)
) ORDER BY INTEGER_IDX ASC;";    // 根据表的列排序ID进行排序

结果:
展示表user下所有的列

 

 

  • 大小: 12.8 KB
分享到:
评论

相关推荐

    hive1.2.1-mysql-connector.rar

    在Hive中,当选择MySQL作为元数据存储时,这个驱动文件是必需的,因为它使得Hive Metastore服务能够与MySQL数据库通信,存储表信息、分区信息、列信息等元数据。 知识点详细说明: - **Apache Hive**:Hive是一个...

    Hive metastore 使用达梦数据库存储元数据

    通常,Hive元数据默认存储在MySQL或Derby等关系型数据库中。然而,为了适应更复杂的业务需求和更高的性能,我们可以选择将Hive元数据存储在达梦数据库中。本文将详细介绍如何配置Hive metastore以使用达梦数据库。 ...

    hive-1.1.0-cdh5.14.2.tar.gz和mysql-connector-java-5.1.38.jar连接包

    4. **MySQL元数据存储**: 在Hive中,元数据通常存储在关系型数据库中,如MySQL,用于跟踪表和分区的位置、列信息、分区信息等。`mysql-connector-java-5.1.38.jar`就是用来连接Hive到MySQL元数据存储的必要组件。 5...

    hive数据存储模式

    Hive的数据分为两大类:**表数据**和**元数据**。 - **表数据**:指的是Hive表中的数据,这些数据实际上是Hive表格的实体内容。例如,用户信息表中的姓名、年龄等字段的数据。 - **元数据**:主要包括表的名称、列...

    hive相关练习的数据data.rar

    元数据存储在Hive的元数据存储系统(通常是MySQL或Derby)。这些元数据使得Hive能够理解和解析用户的SQL查询,并将其转换为适合MapReduce或Tez等计算框架的任务。 在这个压缩包中,有两个主要的文件位于"gulivideo...

    Hive4--HIVE元数据库.pdf

    元数据库存储了关于Hive表、列、分区等对象的所有元数据信息,使得Hive能够理解数据的结构和位置,从而执行查询。 元数据库通常存储在关系数据库管理系统(RDBMS)中,例如MySQL或Derby。在本例中,我们以Derby为例...

    Hive4——HIVE元数据库.pdf

    1. **元数据透明度**:与PostgreSQL等开源RDBMS相比,Hive的元数据更加透明,用户可以直接访问和理解元数据表的内容。而在Oracle等商业化系统中,元数据通常被封装,对外不直接可见。 2. **ID管理**:Hive的`...

    hive影评案例.rar

    元数据存储通常使用MySQL或Derby,保存表名、列名等信息;Hive服务器解析并优化查询,生成执行计划;执行器负责在Hadoop MapReduce上运行任务。 2. **HQL与SQL的区别**:HQL与SQL语法相似,但HQL是针对分布式环境...

    hadoop上搭建hive成功后,连接mysql.pdf

    `命令查看数据库中的所有表,确认Hive是否已经成功将元数据存储在MySQL中。 **三、在Hive中操作** 1. **启动Hive CLI**: 在另一个新窗口中,输入`hive`启动Hive的命令行界面。 2. **查看Hive数据库**: 在Hive...

    hive相关jar包

    2. **Hive Metastore**:这部分jar包用于存储Hive的元数据,包括表结构、分区信息、列类型等。元数据可以存储在本地MySQL、PostgreSQL或者远程Thrift服务器上。 3. **Hive SerDes(Serialization/Deserialization)...

    kittle连接hive需要的jar包

    因此,Kettle需要这个驱动来连接到存储Hive元数据的MySQL数据库,以便获取表定义和其他相关信息。 5. **lib文件夹**: 压缩包中的"lib"文件夹通常包含所有这些必要的JAR包。在Kettle中,这些JAR包需要被添加到...

    hive sql详解 经典

    客户端是用户交互的接口,元数据存储通常在MySQL或Derby数据库中,保存表和分区的信息。驱动器解析SQL查询并生成执行计划,执行器负责在Hadoop集群上执行这些计划。 2. **HiveQL**: HiveQL是Hive的SQL方言,支持...

    Hadoop数据仓库工具--hive介绍

    - **元数据存储**:Hive 的元数据(如表结构、分区信息等)通常存储在一个关系型数据库中,如 MySQL 或 PostgreSQL,用于管理表的结构和位置信息。 - **计算模型**:Hive 将用户的查询语句转化为 MapReduce 作业执行...

    大数据组件hive的安装步骤

    3. 通过配置文件使Hive能够连接到MySQL数据库,并将元数据存储在MySQL中。 综合以上内容,安装Hive组件并配置它与MySQL关联需要遵循一系列详细的步骤来确保系统的正确配置和运行。整个过程需要确保对Linux命令行有...

    HIVE资料.zip

    1. **元数据(Metadata)**:Hive通过元数据来描述数据,包括表名、列名、分区、表的存储位置等。这些元数据存储在MySQL或Derby这样的关系数据库中,称为元数据存储库。 2. **HQL(Hive Query Language)**:Hive...

    Doris介绍、原理、安装、集成hive

    1. **创建Hive表映射**:在Doris中定义与Hive表对应的表结构。 2. **配置Hive元数据信息**:将Hive的元数据信息(如位置、格式等)配置到Doris中。 3. **查询Hive数据**:使用Doris查询Hive表中的数据。 通过这种...

    Hive收集的电子文档

    Hive使用Metastore来存储这些元数据,可以是本地的MySQL或远程的Thrift服务器。 2. **HQL(Hive Query Language)**:HQL类似于SQL,但针对大数据进行了优化,支持创建表、插入数据、查询数据、数据转换等功能。HQL...

    hive课件.rar

    1. **Hive Metastore**:存储元数据,如表名、列名、分区信息等,通常与关系型数据库(如MySQL)结合使用,用于管理Hive的元数据。 2. **HQL**:Hive的查询语言,其语法类似SQL,但有一些限制,如不支持事务、子...

    hive语法和常用函数[归纳].pdf

    表的元数据保存传统的数据库的表中,当前Hive只支持Derby和MySQL数据库。 内部表:Hive中的表和传统数据库中的表在概念上是类似的,Hive的每个表都有自己的存储目录,除了外部表外,所有的表数据都存放在配置在hive...

Global site tag (gtag.js) - Google Analytics