hive 元数据信息表解析

目录

1 概述

2 Hive元数据表结构

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

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

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

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

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

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

3、获取所有的库+表+字段名+分区名


1 概述

本文我们介绍Hive的原数据表,默认是存储再derby中的,但是我们一般会修改会mysql。我们这里使用的也是mysql进行的管理。库名为metastore。

下面我们将分析hive原数据表以及如果获取所有表以供血缘分析。

2 Hive元数据表结构

hive 的元数据配置在 hive-site.xml 中

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
</property>

登录mysql后,use metastore,然后showtables 就可以看到所有表了

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

metastore.VERSION Hive版本信息

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

metastore.DBS:该表存储Hive中所有数据库的基本信息

字段如下:

表字段

说明

示例数据

DB_ID

数据库ID

1

DESC

数据库描述

Default  Hive database

DB_LOCATION_URI

数据HDFS路径

hdfs://193.168.1.75:9000/test-warehouse

NAME

数据库名

default

OWNER_NAME

数据库所有者用户名

public

OWNER_TYPE

所有者角色

ROLE

metastore.DATABASE_PARAMS:该表存储数据库的相关参数,在CREATE DATABASE时候用WITH DBPROPERTIES(property_name=property_value, …)指定的参数。

表字段

说明

示例数据

DB_ID

数据库ID

1

PARAM_KEY

参数名

createdby

PARAM_VALUE

参数值

root

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

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

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

metastore.TBLS:该表中存储Hive表,视图,索引表的基本信息,主要包括表id、表名、表类型、视图Hsql等

表字段

说明

示例数据

TBL_ID

表ID

21

CREATE_TIME

创建时间

1447675704

DB_ID

数据库ID

1

LAST_ACCESS_TIME

上次访问时间

1447675704

OWNER

所有者

root

RETENTION

保留字段

0

SD_ID

序列化配置信息

41,对应SDS表中的SD_ID

TBL_NAME

表名

ex_detail_ufdr_30streaming

TBL_TYPE

表类型

EXTERNAL_TABLE

VIEW_EXPANDED_TEXT

视图的详细HQL语句

VIEW_ORIGINAL_TEXT

视图的原始HQL语句

 metastore.TABLE_PARAMS:该表存储表/视图属性信息,TBLS通过 表id 关联可获得该表的

numFiles、numRows、rawDataSize、totalSize、transient_lastDdlTime、last_modified_by、last_modified_time等信息

表字段

说明

示例数据

TBL_ID

表ID

1

PARAM_KEY

属性名

totalSize,numRows,EXTERNAL

PARAM_VALUE

属性值

970107336、21231028、TRUE

 metastore.TBL_PRIVS:该表存储表/视图的授权信息

表字段

说明

示例数据

TBL_GRANT_ID

授权ID

1

CREATE_TIME

授权时间

1436320455

GRANT_OPTION

0

GRANTOR

授权执行用户

root

GRANTOR_TYPE

授权者类型

USER

PRINCIPAL_NAME

被授权用户

username

PRINCIPAL_TYPE

被授权用户类型

USER

TBL_PRIV

权限

Select、Alter

TBL_ID

表ID

21,对应TBLS表的TBL_ID

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

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


metastore.SDS:该表保存文件存储的基本信息,如是存储格式、存储位置、分桶数量、否压缩、INPUT_FORMAT、OUTPUT_FORMAT等。TBLS表中的SD_ID与该表关联,可以获取Hive表的存储信息。

表字段

说明

示例数据

SD_ID

存储信息ID

41

CD_ID

字段信息ID

21,对应CDS表

INPUT_FORMAT

文件输入格式

org.apache.hadoop.mapred.TextInputFormat

IS_COMPRESSED

是否压缩

0

IS_STOREDASSUBDIRECTORIES

是否以子目录存储

0

LOCATION

HDFS路径

hdfs://193.168.1.75:9000/detail_ufdr_streaming_test

NUM_BUCKETS

分桶数量

0

OUTPUT_FORMAT

文件输出格式

org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat

SERDE_ID

序列化类ID

41,对应SERDES表

 metastore.SD_PARAMS: 该表存储Hive存储的属性信息,在创建表时候使用STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。

表字段

说明

示例数据

SD_ID

存储配置ID

41

PARAM_KEY

存储属性名

PARAM_VALUE

存储属性值

 metastore.SERDES:该表存储序列化使用的类信息

表字段

说明

示例数据

SERDE_ID

序列化类配置ID

41

NAME

序列化类别名

NULL

SLIB

序列化类

org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

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

表字段

说明

示例数据

SERDE_ID

序列化类配置ID

41

PARAM_KEY

属性名

field.delim

PARAM_VALUE

属性值

|

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

metastore.COLUMNS_V2:该表存储表对应的字段信息,如:字段id,字段名、是否为空、字段类型、字段顺序。

表字段

说明

示例数据

CD_ID

字段信息ID

21

COMMENT

字段注释

NULL

COLUMN_NAME

字段名

air_port_duration

TYPE_NAME

字段类型

bigint

INTEGER_IDX

字段顺序

119

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

metastore.PARTITIONS:该表存储表分区的基本信息,分区创建时间,分区名、分区存储id、归属表id。

表字段

说明

示例数据

PART_ID

分区ID

21

CREATE_TIME

分区创建时间

1450861405

LAST_ACCESS_TIME

最后一次访问时间

0

PART_NAME

分区名

hour=15/last_msisdn=0

SD_ID

分区存储ID

43

TBL_ID

表ID

22

LINK_TARGET_ID

NULL

metastore.PARTITION_KEYS:该表存储分区的字段信息,分区字段名、分区字段类型、分区字段顺序

表字段

说明

示例数据

TBL_ID

表ID

22

PKEY_COMMENT

分区字段说明

NULL

PKEY_NAME

分区字段名

hour

PKEY_TYPE

分区字段类型

int

INTEGER_IDX

分区字段顺序

0

 metastore.PARTITION_KEY_VALS:该表存储分区字段值

表字段

说明

示例数据

PART_ID

分区ID

21

PART_KEY_VAL

分区字段值

0  

INTEGER_IDX

分区字段值顺序

1

 metastore.PARTITION_PARAMS:该表存储分区的属性信息,key的信息包括:文件数numFiles、分区存储总大小totalSize、最后更新时间transient_lastDdlTime

表字段

说明

示例数据

PART_ID

分区ID

21

PARAM_KEY

分区属性名

numFiles,numRows

PARAM_VALUE

分区属性值

1,502195

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

DB_PRIVS

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

IDXS

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

INDEX_PARAMS

索引相关的属性信息

TBL_COL_STATS

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

TBL_COL_PRIVS

表字段的授权信息

PART_PRIVS

分区的授权信息

PART_COL_PRIVS

分区字段的权限信息

PART_COL_STATS

分区字段的统计信息

FUNCS

用户注册的函数信息

FUNC_RU

用户注册函数的资源信息
 

3、获取所有的库+表+字段名+分区名

SELECT b.DB_ID,b.name DB_NAME,a.TBL_ID,a.TBL_NAME,c.COLUMN_NAME,c.TYPE_NAME,c.INTEGER_IDX,c.PARTITION_KEY,c.COMMENT FROM 
metastore.TBLS a
join metastore.DBS b on a.DB_ID=b.DB_ID
 join 
(select b.CD_ID ,b.COMMENT,b.COLUMN_NAME,b.TYPE_NAME,b.INTEGER_IDX,'' PARTITION_KEY  from metastore.COLUMNS_V2 b 
union all 
-- 拼接partition key ,将 key_id + 9999 order by 置后 ,增加标识
select c.TBL_ID,c.PKEY_COMMENT,c.PKEY_NAME,c.PKEY_TYPE,c.INTEGER_IDX + 99999,'Y' PARTITION_KEY from metastore.PARTITION_KEYS c) c  
 on a.tbl_id =c.CD_ID 
order by b.DB_ID,c.cd_id,c.INTEGER_IDX ;

结果如下:

本文部分资料来自于Hive 元数据表结构详解 - 小人物-烟火 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值