美文网首页
Hive元数据结构梳理

Hive元数据结构梳理

作者: 吃货大米饭 | 来源:发表于2019-07-17 17:04 被阅读0次

    一、概述

    我们知道Apache Hive 是构建在Apache Hadoop之上的数据仓库,适合处理海量的离线数据。Hive的数据构成由HDFS+元数据组成。而元数据对于hive是极其重要的,本文我们介绍Hive的元数据表,它默认是存储在derby中的,但是我们一般会修改为mysql。

    二、元数据表结构

    2019-07-17_160100.png

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

    • version
    VER_ID SCHEMA_VERSION VERSION_COMMENT
    ID主键 Hive版本 版本说明
    1 1.1.0 Set by MetaStore hadoop@192.168.174.130

    这张表虽然简单,但是其中数据极为重要。如果该表出现问题,根本进入不了Hive-Cli。比如该表不存在,当启动Hive-Cli时候,就会报错”Table ‘hive.version’ doesn’t exist”。

    • dbs
    DB_ID DESC DB_LOCATION_URI NAME OWNER_NAME OWNER_TYPE
    数据库id 数据库描述 数据库HDFS路径 数据库名称 数据库所有者用户名 所有者角色
    1 Default Hive database hdfs://Hadoop001:9000/user/hive/warehouse default public ROLE
    • database_params(数据库参数的元数据信息)
      该表存储数据库的相关参数,在CREATE DATABASE时候用
      WITH DBPROPERTIES (property_name=property_value, …)指定的参数
    DB_ID PARAM_KEY PARAM_VALUE
    数据库id 参数名称 参数值
    1 createdby 123
    • tbls
      该表中存储Hive表、视图、索引表的基本信息
    TBL_ID CREATE_TIME DB_ID LAST_ACCESS_TIME OWNER RETENTION SD_ID TBL_NAME TBL_TYPE VIEW_EXPANDED_TEXT VIEW_ORIGINAL_TEXT
    表id 创建时间 数据库id 上次访问时间 所有者 保留字段 序列化配置信息( 对应SDS表中的SD_ID) 表名称 表类型 视图的详细hql语句 视图的原始hql语句
    1 1563296015 1 0 hadoop 0 1 hello MANAGED_TABLE
    2 1563298635 1 0 hadoop 0 2 hello2 MANAGED_TABLE
    4 1563301336 1 0 hadoop 0 4 genome_scores MANAGED_TABLE
    • table_params
      该表存储表/视图的属性信息,在CREATE TABLE时候用
      TBLPROPERTIES (property_name=property_value, ...)指定的参数
    TBL_ID PARAM_KEY PARAM_VALUE
    表id 属性名称 属性值
    1 COLUMN_STATS_ACCURATE true
    1 numFiles 2
    1 numRows 2
    1 rawDataSize 10
    1 totalSize 12
    1 transient_lastDdlTime 1563299705
    2 COLUMN_STATS_ACCURATE true
    2 numFiles 1
    2 numRows 1
    2 rawDataSize 5
    2 totalSize 6
    2 transient_lastDdlTime 1563298706
    4 COLUMN_STATS_ACCURATE true
    4 last_modified_by hadoop
    4 last_modified_time 1563302564
    4 numFiles 1
    4 numRows 0
    4 rawDataSize 0
    4 skip.header.line.count 1
    4 totalSize 323544381
    4 transient_lastDdlTime 1563303284
    • sds
      该表保存文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。 与tbles相关联可获取表信息
    SD_ID CD_ID INPUT_FORMAT IS_COMPRESSED IS_STOREDASSUBDIRECTORIES LOCATION NUM_BUCKETS OUTPUT_FORMAT SERDE_ID
    存储信息ID(对应tbls表中的SD_ID ) 字段信息ID(对应column_v2 的CD_ID) 文件输入格式 是否压缩 是否以子目录存储 HDFS路径 分桶数量 文件输出格式 序列化类ID
    1 1 org.apache.hadoop.mapred.TextInputFormat 0 0 hdfs://Hadoop001:9000/user/hive/warehouse/hello -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 1
    2 2 org.apache.hadoop.mapred.TextInputFormat 0 0 hdfs://Hadoop001:9000/user/hive/warehouse/hello2 -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 2
    4 4 org.apache.hadoop.mapred.TextInputFormat 0 0 hdfs://Hadoop001:9000/user/hive/warehouse/genome_scores -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 4
    • SD_PARAMS
      该表存储Hive存储的属性信息,在创建表时候使用
      STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定
    SD_ID PARAM_KEY PARAM_VALUE
    存储信息id 参数key 参数value
    1
    • serdes
      该表存储序列化使用的类信息
    SERDE_ID NAME SLIB
    序列化类配置ID(对应SDS的 SERDE_ID) 序列化类别名 序列化类
    1 org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    2 org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    4 org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    • serde_params
      该表存储序列化的一些属性、格式信息,比如:行、列分隔符
    SERDE_ID PARAM_KEY PARAM_VALUE
    序列化类配置ID(对应SDS的 SERDE_ID) 属性名称 属性值
    1 field.delim ,
    1 serialization.format ,
    2 field.delim ,
    2 serialization.format ,
    4 field.delim ,
    4 serialization.format 1
    • columns_v2
      表的字段信息
    CD_ID COMMENT COLUMN_NAME TYPE_NAME INTEGER_IDX
    字段信息ID(对应SDS 表CD_ID) 字段注释 字段名 字段类型 字段顺序
    1 id int 0
    1 name string 1
    2 id int 0
    2 name string 1
    4 movieid int 0
    4 relevance double 2
    4 tagid int 1

    三、元数据ER图

    2019-07-17_113017.png

    相关文章

      网友评论

          本文标题:Hive元数据结构梳理

          本文链接:https://www.haomeiwen.com/subject/yjtclctx.html