調研系列第四篇:Hive MetaStore數據庫表結構


先來一張整體概述

 

 

Hive MetaStore數據庫表結構

1.         SEQUENCE_TABLE : 對於dbtblsds等的SEQUENCE_id ,每次新增的時候取一個

 

 

2.         DBS:存儲hiveDB信息,表結構如下 

 

 

3.         DATABASE_PARAMS dbkey-value參數 

4.         SDS:提供table/partition對應的文件系統路徑location,以及對這個數據讀取的InputFormat、是否壓縮、是否是子文件夾存儲、SerDe類(對應於SERDES表)

 

 

5.         SD_PARAMS :為每個SDSkey-value參數

6.         SERDES :每個SDS對應的存儲的SerDer類,每個SDS記錄一個SERDES表的記錄

 

7.         SERDE_PARAMSSERDE的一些參數,主要是行分隔符、列分隔符、NULL字符串等等,可以每個SerDer自己定義

 

 

8.         CDS : 暫時沒明白到底是什么,不過其idtbl_id是一致的,貌似就是tbl_id 

9.         TBLS table的具體信息 

 

 

Tabid、創建時間、數據庫idlast_accessowner(這個后面會和權限控制有關)、表的存儲位置id、表明、TBL_TYPE(外部表、內部表)、

10.     TABLE_PARAMS table級別的key-value參數

 

主要是總文件個數、總文件大小、commentlast_ddl_time(上次執行ddl的時間)、以及用戶自定義的一些參數(orcfile中的參數)

 

11.     COLUMNS_V2 :列的信息 

 

CD_ID對應的應該是tbl_id  

 

12.     PARTITION_KEYS :每個表的partitions 

 

 

 

13.     PARTITIONS partitions

 

Partitions id create_timepart_namesds_idtbl_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中對應這一個翻譯成具體的DDLTaskswatch-case 具體可以參看下DDLSemanticAnalyzer的代碼,這塊代碼相對較簡單 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM