zoukankan      html  css  js  c++  java
  • Hive基础(10):元数据(一)Hive的元数据表结构详解

    https://blog.csdn.net/yu0_zhang0/article/details/80697913

    1 概述

    我们知道Apache Hive 是构建在Apache Hadoop之上的数据仓库。有助于对大型的数据集进行读、写和管理。这也是官网介绍的第一句话,虽然简短但是却能提炼出很多东西,大家可以去细细品味下。该篇博客不做过多讲述。本文我们介绍Hive的原数据表,他默认是存储再derby中的,但是我们一般会修改会mysql。作者使用的也是mysql进行的管理。

    2 Hive元数据表结构

    • hive-site.xml
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/basic01?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    • 通过mysql查看basic01数据库
    show tables;
    +---------------------------+
    | Tables_in_basic01         |
    +---------------------------+
    | bucketing_cols            |
    | cds                       |
    | columns_v2                |
    | database_params           |
    | 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                   |
    +---------------------------+

    下面我们就一个一个讲解看看其中到底是什么关系。

    2.1 version(存储Hive版本的元数据表)

    VER_IDSCHEMA_VERSIONVERSION_COMMENT
    ID主键 Hive版本 版本说明
    1 0.12.0 Set by MetaStore hadoop@192.168.137.130

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

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

      • select * from dbs
        该表存储Hive中所有数据库的基本信息,字段如下:
    数据库ID数据库描述数据库HDFS路径数据库名数据库所有者用户名所有者角色
    DB_ID DESC DB_LOCATION_URI NAME OWNER_NAME OWNER_TYPE
    1 Default Hive database hdfs://192.168.137.130:9000/user/hive/warehouse default public ROLE
    6 NULL hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db hive hadoop USER
    • select * from database_params;
      该表存储数据库的相关参数,在CREATE DATABASE时候用
      WITH DBPROPERTIES (property_name=property_value, …)指定的参数。
    元数据表字段说明示例数据
    DB_ID 数据库ID 2
    PARAM_KEY 参数名 createdby
    PARAM_VALUE 参数值 lxw1234

    2.3 Hive表和视图相关的元数据表

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

    • select * from tbls;
      该表中存储Hive表、视图、索引表的基本信息。
    表ID创建时间数据库ID上次访问时间所有者保留字段序列化配置信息( 对应SDS表中的SD_ID表名表类型视图的详细HQL语句视图的原始HQL语句
    TBL_ID CREATE_TIME DB_ID LAST_ACCESS_TIME OWNER RETENTION SD_ID TBL_NAME TBL_TYPE VIEW_EXPANDED_TEXT VIEW_ORIGINAL_TEXT
    1 1519944170 6 0 hadoop 0 1 page_views MANAGED_TABLE NULL NULL
    2 1519944313 6 0 hadoop 0 2 page_views_bzip2 MANAGED_TABLE NULL NULL
    3 1519944819 6 0 hadoop 0 3 page_views_snappy MANAGED_TABLE NULL NULL
      • select * from table_params;
        该表存储表/视图的属性信息。
    表ID(对应TBLS的tbl_id)属性名属性值
    TBL_ID PARAM_KEY PARAM_VALUE
    1 COLUMN_STATS_ACCURATE true
    1 numFiles 1
    1 numRows 0
    1 rawDataSize 0
    1 totalSize 19014993
    1 transient_lastDdlTime 1519944212
    2 COLUMN_STATS_ACCURATE true
    2 numFiles 1
    2 numRows 100000
    2 rawDataSize 18914993
    2 totalSize 3814674
    2 transient_lastDdlTime 1519944314
    • TBL_PRIVS
      该表存储表/视图的授权信息

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

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

      • select * from sds;
        文件存储的基本信息:
    存储信息ID(对应tbls表中的SD_ID )字段信息ID(对应column_v2 的CD_ID)文件输入格式是否压缩是否以子目录存储HDFS路径分桶数量文件输出格式序列化类ID
    SD_ID CD_ID INPUT_FORMAT IS_COMPRESSED IS_STOREDASSUBDIRECTORIES LOCATION NUM_BUCKETS OUTPUT_FORMAT SERDE_ID
    1 1 org.apache.hadoop.mapred.TextInputFormat     hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 1
    2 2 org.apache.hadoop.mapred.TextInputFormat     hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_bzip2 -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 2
    3 3 org.apache.hadoop.mapred.TextInputFormat     hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_snappy -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 3
    21 21 org.apache.hadoop.mapred.TextInputFormat     hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/tt -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 21
    22 22 org.apache.hadoop.mapred.SequenceFileInputFormat     hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_seq -1 org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat 22
    23 23 org.apache.hadoop.hive.ql.io.RCFileInputFormat     hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_rcfile -1 org.apache.hadoop.hive.ql.io.RCFileOutputFormat 23
    24 24 org.apache.hadoop.hive.ql.io.orc.OrcInputFormat     hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_orc_zlib -1 org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat 24
    27 27 com.hadoop.mapred.DeprecatedLzoTextInputFormat     hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_lzo_index -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 27
      • SD_PARAMS
        该表存储Hive存储的属性信息,在创建表时候使用
        STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。

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

    序列化类配置ID(对应SDS的 SERDE_ID)序列化类别名序列化类
    SERDE_ID NAME SLIB
    1 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    2 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    3 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    21 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    22 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    23 NULL org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
    24 NULL org.apache.hadoop.hive.ql.io.orc.OrcSerde
    • select * from serde_params;
      该表存储序列化的一些属性、格式信息,比如:行、列分隔符
    序列化类配置ID(对应SDS的 SERDE_ID)属性名属性值
    SERDE_ID PARAM_KEY PARAM_VALUE
    1 field.delim  
    1 serialization.format  
    2 field.delim  
    2 serialization.format  
    3 field.delim  
    3 serialization.format  
    21 field.delim  

    2.5 Hive表字段相关的元数据表

    • select * from columns_v2;
      表的字段信息
    字段信息ID(对应SDS 表CD_ID)字段注释字段名字段类型字段顺序
    CD_ID COMMENT COLUMN_NAME TYPE_NAME INTEGER_IDX
    1 NULL city_id string 6
    1 NULL end_user_id string 5
    1 NULL ip string 4
    1 NULL referer string 3
    1 NULL session_id string 2
    1 NULL track_time string 0
    1 NULL url string 1
    2 NULL city_id string 6
    2 NULL end_user_id string 5
    2 NULL ip string 4
    2 NULL referer string 3
    2 NULL session_id string 2
    2 NULL track_time string 0
    2 NULL url string 1

    2.6 Hive表分区相关的元数据表

    主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

    • select * from partitions ;
      分区的基本信息
    分区ID分区创建时间最后一次访问时间分区名分区存储ID表ID
    PART_ID CREATE_TIME LAST_ACCESS_TIME PART_NAME SD_ID TBL_ID
    1 1506226696   pt=2015-06-12 21 2
    • select * from partition_keys;
      分区的字段信息
    元数据表字段说明示例数据
    TBL_ID 表ID 2
    PKEY_COMMENT 分区字段说明  
    PKEY_NAME 分区字段名 pt
    PKEY_TYPE 分区字段类型 string
    INTEGER_IDX 分区字段顺序 1
    • select * from partition_key_vals;
      该表存储分区字段值
    元数据表字段说明示例数据
    PART_ID 分区ID 2
    PART_KEY_VAL 分区字段值 2015-06-12
    INTEGER_IDX 分区字段值顺序 0
    • select * from partition_params;
      该表存储分区的属性信息。
    元数据表字段说明示例数据
    PART_ID 分区ID 2
    PARAM_KEY 分区属性名 numFiles、numRows、rawDataSize、totalSize、transient_lastDdlTime
    PARAM_VALUE 分区属性值 15、502195

    2.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 用户注册函数的资源信息

    最后我们总结下他们之间的关系图:

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/14085938.html

  • 相关阅读:
    【Liunx】centos防火墙
    【Liunx】基础命令
    【Flask】CBV模式
    【Flask】第三方插件
    【Flask】登录练习
    【Flask】特殊装饰器
    【Flask】蓝图
    Django之视图层
    Django之路由控制配置
    Django之静态文件配置
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14085938.html
Copyright © 2011-2022 走看看