先來一張整體概述

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的代碼,這塊代碼相對較簡單 。
