调研系列第四篇: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的代码,这块代码相对较简单 。

原文地址:https://www.cnblogs.com/jeasonit/p/10058955.html