hive元数据相关表结构

概述

 hive是一个构建在hadoop hdfs之上的一个数据仓库。它能够对大量数据进行读写与管理。hive元数据默认是存在Derby数据库上,但是Derby是一个单session,每次只允许一个客户端连接,所以并不适用于生产。一般大家都把hive元数据存在mysql之上,不仅满足多用户连接,也可以将mysql搭建一主一备的集群,防止单点故障。

hive-site.xml配置

 下图是将hive元数据存储在mysql上的配置

<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/applocal?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</value>
</property>
<property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
</property>

 MySQL中applocal库的所有表

+---------------------------+
| bucketing_cols            |
| cds                       |
| columns_v2                |
| database_params           |
| db_privs                  |
| dbs                       |
| func_ru                   |
| funcs                     |
| global_privs              |
| idxs                      |
| index_params              |
| part_col_privs            |
| part_col_stats            |
| part_privs                |
| partition_key_vals        |
| partition_keys            |
| partition_params          |
| partitions                |
| roles                     |
| sd_params                 |
| sds                       |
| sequence_table            |
| serde_params              |
| serdes                    |
| skewed_col_names          |
| skewed_col_value_loc_map  |
| skewed_string_list        |
| skewed_string_list_values |
| skewed_values             |
| sort_cols                 |
| tab_col_stats             |
| table_params              |
| tbl_col_privs             |
| tbl_privs                 |
| tbls                      |
| version                   |
+---------------------------+

1、version表(hive版本)
select * from version;

+--------+----------------+----------------------------------------+
| VER_ID | SCHEMA_VERSION | VERSION_COMMENT                        |
+--------+----------------+----------------------------------------+
|      1 | 1.1.0          | Set by MetaStore hadoop@172.18.172.174 |
+--------+----------------+----------------------------------------+

2、dbs, database_params
 里面存储的是hive所有数据库相关信息

  •  select * from dbs;
数据库ID数据库描述数据库HDFS路径数据库名数据库所有者用户名所有者角色
1Default Hive databasehdfs://hadoop001:9000/user/hive/warehousedefaultpublicROLE
6NULLhdfs://hadoop001:9000/user/hive/warehouse/ya.dbyahadoopUSER
  •  select * from database_params;

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

元数据表字段说明示例数据
DB_ID数据库ID2
PARAM_KEY参数名createdby
PARAM_VALUE参数值ya

3、TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联

  • select * from tbls;

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

表ID创建时间数据库ID上次访问时间所有者保留字段序列化配置信息( 对应SDS表中的SD_ID)表名表类型视图的详细HQL语句视图的原始HQL语句
TBL_IDCREATE_TIMEDB_IDLAST_ACCESS_TIMEOWNERRETENTIONSD_IDTBL_NAMETBL_TYPEVIEW_EXPANDED_TEXTVIEW_ORIGINAL_TEXT
11154028132960hadoop011empMANAGED_TABLENULLNULL
  • select * from table_params;
    该图存储表/视图的属性信息
表ID(对应TBLS的tbl_id)属性名属性值
TBL_IDPARAM_KEYPARAM_VALUE
11transient_lastDdlTime1540281329
16COLUMN_STATS_ACCURATEtrue
16numFiles1
16rawDataSize0
16totalSize700
16transient_lastDdlTime1540284682
16EXTERNALTRUE
  • TBL_PRIVS
    该表存储表/视图的授权信息

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

  • select * from sds;
    文件存储的基本信息
存储信息ID(对应tbl_id)字段信息ID(对应column_v2 的CD_ID)文件输入格式是否压缩是否以子目录存储HDFS路径分桶数量文件输出格式序列化类ID
SD_IDCD_IDINPUT_FORMATIS_COMPRESSEDIS_STOREDASSUBDIRECTORIES
1111org.apache.hadoop.mapred.TextInputFormathdfs://hadoop001:9000/user/hive/warehouse/ya.db/emp-1org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat11
1616org.apache.hadoop.mapred.TextInputFormathdfs://hadoop001:9000/user/hive/warehouse/emp-1org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat16
  • SD_PARAMS
    该表存储Hive存储的属性信息,在创建表时候使用
    STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。

  • select * from serdes;
    该表存储序列化使用的类信息

序列化类配置ID(对应SDS的 SERDE_ID)序列化类别名序列化类
SERDE_IDNAMESLIB
11NULLorg.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
16NULLorg.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
  • select * from serde_params;
    该表存储序列化的一些属性、格式信息,比如:行、列分隔符
序列化类配置ID(对应SDS的 SERDE_ID)属性名属性值
SERDE_IDPARAM_KEYPARAM_VALUE
11serialization.format1
16field.delim
16serialization.format
17field.delim

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

  • select * from columns_v2;
    表的字段信息
字段信息ID(对应SDS 表CD_ID)字段注释字段名字段类型字段顺序
11NULLageint1
11NULLenamestring0
16NULLcommdouble6
16NULLdeptnoint7
16NULLempnoint0

6、Hive表分区相关的元数据表
 主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

  • select * from partitions ;
    分区的基本信息
分区ID分区创建时间最后一次访问时间分区名分区存储ID表ID
PART_IDCREATE_TIMELAST_ACCESS_TIMEPART_NAMESD_IDTBL_ID
115403655330order_month=2018-012726
615403691680order_month=2018-01/location=chengdu3231
  • select * from partition_keys;
    分区的字段信息
表ID说明分区字段名分区字段类型分区字段值顺序
TBL_IDPKEY_COMMENTPKEY_NAMEPKEY_TYPENTEGER_IDX
26NULLorder_monthstring0
31NULLlocationstring1
  • select * from partition_key_vals;
    该表存储分区字段值
分区ID分区值分区字段值顺序
PART_IDPART_KEY_VALINTEGER_IDX
12018-010
62018-010
6chengdu1
  • select * from partition_params;
    该表存储分区的属性信息
分区ID分区字段值顺序分区属性值
1COLUMN_STATS_ACCURATEtrue
1numFiles1
1numRows0
1rawDataSize0

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

表名作用
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用户注册函数的资源信息

最后总结一下上述表之间的关联关系
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值