zoukankan      html  css  js  c++  java
  • 调研系列第四篇:Hive MetaStore数据库表结构

    调研系列第四篇:Hive MetaStore数据库表结构

     

    先来一张整体概述

    Hive MetaStore数据库表结构

    1.         SEQUENCE_TABLE : 对于db、tbl、sds等的SEQUENCE_id ,每次新增的时候取一个

    2.         DBS:存储hive的DB信息,表结构如下 :

    3.         DATABASE_PARAMS :db的key-value参数 

    4.         SDS:提供table/partition对应的文件系统路径location,以及对这个数据读取的InputFormat、是否压缩、是否是子文件夹存储、SerDe类(对应于SERDES表)

    5.         SD_PARAMS :为每个SDS的key-value参数

    6.         SERDES :每个SDS对应的存储的SerDer类,每个SDS记录一个SERDES表的记录

    7.         SERDE_PARAMS:SERDE的一些参数,主要是行分隔符、列分隔符、NULL字符串等等,可以每个SerDer自己定义

    8.         CDS : 暂时没明白到底是什么,不过其id和tbl_id是一致的,貌似就是tbl_id 

    9.         TBLS :table的具体信息 

    Tabid、创建时间、数据库id、last_access、owner(这个后面会和权限控制有关)、表的存储位置id、表明、TBL_TYPE(外部表、内部表)、

    10.     TABLE_PARAMS :table级别的key-value参数

    主要是总文件个数、总文件大小、comment、last_ddl_time(上次执行ddl的时间)、以及用户自定义的一些参数(orcfile中的参数)

    11.     COLUMNS_V2 :列的信息 

    CD_ID对应的应该是tbl_id  

    12.     PARTITION_KEYS :每个表的partitions 列

     

     

    13.     PARTITIONS :partitions

    Partitions id 、create_time、part_name、sds_id、tbl_id

    14.     PARTITION_KEY_VALS

    和上面的表对应,每个partitions对应的具体值 

    15.     PARTITION_PARAMS

    分区参数,暂时为找到怎么设置每个分区的key-value参数

    16.     PART_COL_STATS

    对于每列的统计信息,在0.11以后增加了 

    ANALYZE table contline_revenue_day PARTITION(pdate='2014-03-09') compute statistics for COLUMNS contract_line_id , st_date ,contract_no ; 这样的ddl命令来用于统计每个分区的基本统计信息,用于优化 

    17.     未用到的空表

    BUCKETING_COLS :

    IDXS

    INDEX_PARAMS

    SKEWED_COL_NAMES

    SKEWED_COL_VALUE_LOC_MAP

    SKEWED_STRING_LIST

    SKEWED_STRING_LIST_VALUES

    SKEWED_VALUES

    SORT_COLS

    VERSION

    18.     待补充

    Hive MetaStore 在hive中的访问api

    元数据库的DDL操作,对于元数据库的操作均是在DDLSemanticAnalyzer类中进行的语义解析,然后翻译成DDLTask. execute(DriverContext driverContext)中执行的,具体的操作作如下:

          case HiveParser.TOK_CREATEDATABASE:

          case HiveParser.TOK_DROPDATABASE:

          case HiveParser.TOK_SWITCHDATABASE:

          case HiveParser.TOK_DROPTABLE:

          case HiveParser.TOK_DROPVIEW:

          case HiveParser.TOK_DESCDATABASE:

          case HiveParser.TOK_DESCTABLE:

          case HiveParser.TOK_DESCFUNCTION:

          case HiveParser.TOK_MSCK:

          case HiveParser.TOK_ALTERTABLE_ADDCOLS:

          case HiveParser.TOK_ALTERTABLE_RENAMECOL:

          case HiveParser.TOK_ALTERTABLE_REPLACECOLS:

          case HiveParser.TOK_ALTERTABLE_RENAME:

          case HiveParser.TOK_ALTERTABLE_DROPPARTS:

          case HiveParser.TOK_ALTERTABLE_ADDPARTS:

          case HiveParser.TOK_ALTERTABLE_PROPERTIES:

          case HiveParser.TOK_DROPTABLE_PROPERTIES:

          case HiveParser.TOK_ALTERTABLE_SERIALIZER:

          case HiveParser.TOK_ALTERTABLE_SERDEPROPERTIES:

          case HiveParser.TOK_ALTERINDEX_REBUILD:

          case HiveParser.TOK_ALTERINDEX_PROPERTIES:

          case HiveParser.TOK_ALTERVIEW_PROPERTIES:

          case HiveParser.TOK_DROPVIEW_PROPERTIES:

          case HiveParser.TOK_ALTERVIEW_ADDPARTS:

          case HiveParser.TOK_ALTERVIEW_DROPPARTS:

          case HiveParser.TOK_ALTERVIEW_RENAME:

          case HiveParser.TOK_SHOWDATABASES:

          case HiveParser.TOK_SHOWTABLES:

          case HiveParser.TOK_SHOWCOLUMNS:

          case HiveParser.TOK_SHOW_TABLESTATUS:

          case HiveParser.TOK_SHOW_TBLPROPERTIES:

          case HiveParser.TOK_SHOW_CREATETABLE:

          case HiveParser.TOK_SHOWFUNCTIONS:

          case HiveParser.TOK_SHOWPARTITIONS:

          case HiveParser.TOK_SHOWINDEXES:

          case HiveParser.TOK_SHOWLOCKS:

          case HiveParser.TOK_CREATEINDEX:

          case HiveParser.TOK_DROPINDEX:

          case HiveParser.TOK_ALTERTABLE_CLUSTER_SORT:

          case HiveParser.TOK_ALTERTABLE_TOUCH:

          case HiveParser.TOK_ALTERTABLE_ARCHIVE:

          case HiveParser.TOK_ALTERTABLE_UNARCHIVE:

          case HiveParser.TOK_ALTERTABLE_ALTERPARTS:

          case HiveParser.TOK_LOCKTABLE:

          case HiveParser.TOK_UNLOCKTABLE:

          case HiveParser.TOK_CREATEROLE:

          case HiveParser.TOK_DROPROLE:

          case HiveParser.TOK_GRANT:

          case HiveParser.TOK_REVOKE:

          case HiveParser.TOK_SHOW_GRANT:

          case HiveParser.TOK_GRANT_ROLE:

          case HiveParser.TOK_REVOKE_ROLE:

          case HiveParser.TOK_SHOW_ROLE_GRANT:

          case HiveParser.TOK_ALTERDATABASE_PROPERTIES:

          case HiveParser.TOK_ALTERTABLE_SKEWED:

          case HiveParser.TOK_TRUNCATETABLE:

          case HiveParser.TOK_EXCHANGEPARTITION:

    每一个在DDLSemanticAnalyzer中对应这一个翻译成具体的DDLTask的swatch-case ,具体可以参看下DDLSemanticAnalyzer的代码,这块代码相对较简单 。

  • 相关阅读:
    .netcore利用DI实现级联删除
    识别手写数字增强版100%
    嗨!请查收这道有趣的面试题
    理解TCP/IP协议栈之HTTP2.0
    基于Redis的分布式锁和Redlock算法
    从生日悖论谈哈希碰撞
    Redis面试热点工程架构篇之数据同步
    Redis面试热点之底层实现篇(续)
    saltstack安装+基本命令
    25个iptables常用示例
  • 原文地址:https://www.cnblogs.com/jeasonit/p/10058955.html
Copyright © 2011-2022 走看看