Hive 元数据表结构详解

元数据是基础,这篇文章值得一读。

本文介绍Hive元数据库中一些重要的表结构及用途,方便Impala、SparkSQL、Hive等组件访问元数据库的理解。

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

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

VER_ID

SCHEMA_VERSION

VERSION_COMMENT

ID主键

Hive版本

版本说明

1

1.1.0

Set by MetaStore

如果该表出现问题,根本进入不了Hive-Cli。比如该表不存在,当启动Hive-Cli时候,就会报错”Table ‘hive.version’ doesn’t exist”。

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

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

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关联。

TBLS:该表中存储Hive表,视图,索引表的基本信息

表字段

说明

示例数据

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语句

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

表字段

说明

示例数据

TBL_ID

表ID

1

PARAM_KEY

属性名

totalSize,numRows,EXTERNAL

PARAM_VALUE

属性值

970107336、21231028、TRUE

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文件,而这些信息就保存在这几张表中。

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表

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

表字段

说明

示例数据

SD_ID

存储配置ID

41

PARAM_KEY

存储属性名

PARAM_VALUE

存储属性值

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

表字段

说明

示例数据

SERDE_ID

序列化类配置ID

41

NAME

序列化类别名

NULL

SLIB

序列化类

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

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

表字段

说明

示例数据

SERDE_ID

序列化类配置ID

41

PARAM_KEY

属性名

field.delim

PARAM_VALUE

属性值

|

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

主要涉及COLUMNS_V2

COLUMNS_V2:该表存储表对应的字段信息

表字段

说明

示例数据

CD_ID

字段信息ID

21

COMMENT

字段注释

NULL

COLUMN_NAME

字段名

air_port_duration

TYPE_NAME

字段类型

bigint

INTEGER_IDX

字段顺序

119

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

主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

PARTITIONS:该表存储表分区的基本信息

表字段

说明

示例数据

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

PARTITION_KEYS:该表存储分区的字段信息

表字段

说明

示例数据

TBL_ID

表ID

22

PKEY_COMMENT

分区字段说明

NULL

PKEY_NAME

分区字段名

hour

PKEY_TYPE

分区字段类型

int

INTEGER_IDX

分区字段顺序

0

PARTITION_KEY_VALS:该表存储分区字段值

表字段

说明

示例数据

PART_ID

分区ID

21

PART_KEY_VAL

分区字段值

0

INTEGER_IDX

分区字段值顺序

1

PARTITION_PARAMS:该表存储分区的属性信息

表字段

说明

示例数据

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

用户注册函数的资源信息

原文发布于微信公众号 - 大数据和云计算技术(jiezhu2007)

原文发表时间:2016-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漫漫全栈路

Oracle 学习笔记

前言 本贴内容纪录Oracle课程中的学习笔记,和Oracle的课后作业,以及数据库相关课程的学习笔记,笔记部分使用实例代码记录,不记详细语法。 用户管理...

3355
来自专栏杨建荣的学习笔记

MySQL在RR隔离级别下的unique失效和死锁模拟

今天在测试MySQL事务隔离级别的时候,发现了一个有趣的问题,也参考了杨一之前总结的一篇。http://blog.itpub.net/22664653/view...

3586
来自专栏乐沙弥的世界

ORA-31623: a job is not attached to this session via the specified handle

    在使用Oracel Datapump API时碰到ORA-31623(a job is not attached to this session via...

883
来自专栏数据库

oracle常用命令大全

一、Oracle数据库实例、用户、目录及session会话查看: 1、ORACLE SID查看设置 查看SID、用户名 $ env|grep SID 、sele...

3997
来自专栏沃趣科技

会话和锁信息查询视图 | 全方位认识 sys 系统库

在上一篇《等待事件统计视图 | 全方位认识 sys 系统库》中,我们介绍了sys 系统库中的等待事件统计视图,本期的内容先给大家介绍会话信息和锁等待信息查询视图...

1210
来自专栏乐沙弥的世界

临时表空间的管理与受损恢复

      Oracle 临时表空间是Oracle数据库的重要组成部分,尽管该部分并没有cont体系结构上得以展现,但其重要地位也是不容忽视的。尤其是 对于大...

1083
来自专栏我的博客

Mysql触发器

MySQL触发器 1、 触发器作用 日志跟踪:使用数据库记录apache等日志,可以使用自动插入操作 验证数据:触发器可以验证更新数据库要存入的数据 引用完整:...

3156
来自专栏熊二哥

那些年我们写过的T-SQL(下篇)

下篇的内容很多都会在工作中用到,尤其是可编程对象,那些年我们写过的存储过程,有木有?到目前为止很多大型传统企业仍然很依赖存储过程。这部分主要难理解的部分是事务和...

2115
来自专栏Golang语言社区

如何跨服务器复制表中数据

不同服务器数据库之间的数据操作 不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from ...

4549
来自专栏顶级程序员

为什么忘记 commit 也会造成 select 查询的性能问题

作者:潇湘隐者 www.cnblogs.com/kerrycode/p/5836015.html 今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器OR...

2948

扫码关注云+社区