概述
Hive 的元數據信息通常存儲在關系型數據庫中,常用MySQL數據庫作為元數據庫管理。上一篇hive的安裝也是將元數據信息存放在MySQL數據庫中。
Hive的元數據信息在MySQL數據中有57張表
一、存儲Hive版本的元數據表(VERSION)
VERSION -- 查詢版本信息
該表比較簡單,但很重要。
VER_ID | SCHEMA_VERSION | VERSION_COMMENT |
ID主鍵 | Hive版本 | 版本說明 |
1 | 0.13.0 | Set by MetaStore |
如果該表出現問題,根本進入不了Hive-Cli。
比如該表不存在,當啟動Hive-Cli時候,就會報錯”Table ‘hive.version’ doesn’t exist”。
二、Hive數據庫相關的元數據表(DBS、DATABASE_PARAMS)
1、DBS
DBS -- 存儲Hive中所有數據庫的基本信息
元數據表字段 | 說明 | 示例數據 |
DB_ID | 數據庫ID | 2 |
DESC | 數據庫描述 | 測試庫 |
DB_LOCATION_URI | 數據庫HDFS路徑 | hdfs://namenode/user/hive/warehouse/lxw1234.db |
NAME | 數據庫名 | lxw1234 |
OWNER_NAME | 數據庫所有者用戶名 | lxw1234 |
OWNER_TYPE | 所有者角色 | USER |
2、DATABASE_PARAMS
DATABASE_PARAMS --該表存儲數據庫的相關參數,在CREATE DATABASE時候用
WITH DBPROPERTIES (property_name=property_value, …)指定的參數。
元數據表字段 | 說明 | 示例數據 |
DB_ID | 數據庫ID | 2 |
PARAM_KEY | 參數名 | createdby |
PARAM_VALUE | 參數值 | lxw1234 |
注意:
DBS和DATABASE_PARAMS這兩張表通過DB_ID字段關聯。
三、Hive表和視圖相關的元數據表
主要有TBLS、TABLE_PARAMS、TBL_PRIVS,這三張表通過TBL_ID關聯。
1、TBLS
該表中存儲Hive表、視圖、索引表的基本信息。
元數據表字段 | 說明 | 示例數據 |
TBL_ID | 表ID | 1 |
CREATE_TIME | 創建時間 | 1436317071 |
DB_ID | 數據庫ID | 2,對應DBS中的DB_ID |
LAST_ACCESS_TIME | 上次訪問時間 | 1436317071 |
OWNER | 所有者 | liuxiaowen |
RETENTION | 保留字段 | 0 |
SD_ID | 序列化配置信息 | 86,對應SDS表中的SD_ID |
TBL_NAME | 表名 | lxw1234 |
TBL_TYPE | 表類型 | MANAGED_TABLE、EXTERNAL_TABLE、INDEX_TABLE、VIRTUAL_VIEW |
VIEW_EXPANDED_TEXT | 視圖的詳細HQL語句 | select `lxw1234`.`pt`, `lxw1234`.`pcid` from `liuxiaowen`.`lxw1234` |
VIEW_ORIGINAL_TEXT | 視圖的原始HQL語句 | select * from lxw1234 |
2、TABLE_PARAMS
該表存儲表/視圖的屬性信息。
元數據表字段 | 說明 | 示例數據 |
TBL_ID | 表ID | 1 |
PARAM_KEY | 屬性名 | totalSize、numRows、EXTERNAL |
PARAM_VALUE | 屬性值 | 970107336、21231028、TRUE |
3、TBL_PRIVS
該表存儲表/視圖的授權信息
元數據表字段 | 說明 | 示例數據 |
TBL_GRANT_ID | 授權ID | 1 |
CREATE_TIME | 授權時間 | 1436320455 |
GRANT_OPTION | 0 | |
GRANTOR | 授權執行用戶 | liuxiaowen |
GRANTOR_TYPE | 授權者類型 | USER |
PRINCIPAL_NAME | 被授權用戶 | username |
PRINCIPAL_TYPE | 被授權用戶類型 | USER |
TBL_PRIV | 權限 | Select、Alter |
TBL_ID | 表ID | 22,對應TBLS表中的TBL_ID |
四、Hive文件存儲信息相關的元數據表
主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS
由於HDFS支持的文件格式很多,而建Hive表時候也可以指定各種文件格式,Hive在將HQL解析成MapReduce時候,需要知道去哪里,使用哪種格式去讀寫HDFS文件,而這些信息就保存在這幾張表中。
1、SDS
該表保存文件存儲的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否壓縮等。
TBLS表中的SD_ID與該表關聯,可以獲取Hive表的存儲信息。
元數據表字段 | 說明 | 示例數據 |
SD_ID | 存儲信息ID | 1 |
CD_ID | 字段信息ID | 21,對應CDS表 |
INPUT_FORMAT | 文件輸入格式 | org.apache.hadoop.mapred.TextInputFormat |
IS_COMPRESSED | 是否壓縮 | 0 |
IS_STOREDASSUBDIRECTORIES | 是否以子目錄存儲 | 0 |
LOCATION | HDFS路徑 | hdfs://namenode/hivedata/warehouse/ut.db/t_lxw |
NUM_BUCKETS | 分桶數量 | 5 |
OUTPUT_FORMAT | 文件輸出格式 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |
SERDE_ID | 序列化類ID | 3,對應SERDES表 |
2、SD_PARAMS
該表存儲Hive存儲的屬性信息,在創建表時候使用
STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。
元數據表字段 |
說明 | 示例數據 |
SD_ID | 存儲配置ID | 1 |
PARAM_KEY | 存儲屬性名 | |
PARAM_VALUE | 存儲屬性值 |
3、SERDES
該表存儲序列化使用的類信息
元數據表字段 | 說明 | 示例數據 |
SERDE_ID | 序列化類配置ID | 1 |
NAME | 序列化類別名 | |
SLIB | 序列化類 | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe |
4、SERDE_PARAMS
該表存儲序列化的一些屬性、格式信息,比如:行、列分隔符
元數據表字段 | 說明 | 示例數據 |
SERDE_ID | 序列化類配置ID | 1 |
PARAM_KEY | 屬性名 | field.delim |
PARAM_VALUE | 屬性值 | , |
五、Hive表字段相關的元數據表
主要涉及COLUMNS_V2
1、COLUMNS_V2
該表存儲表對應的字段信息。
元數據表字段 | 說明 | 示例數據 |
CD_ID | 字段信息ID | 1 |
COMMENT | 字段注釋 | |
COLUMN_NAME | 字段名 | pt |
TYPE_NAME | 字段類型 | string |
INTEGER_IDX | 字段順序 | 2 |
六、Hive表分區相關的元數據表
主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS
1、PARTITIONS
該表存儲表分區的基本信息。
元數據表字段 | 說明 | 示例數據 |
PART_ID | 分區ID | 1 |
CREATE_TIME | 分區創建時間 | |
LAST_ACCESS_TIME | 最后一次訪問時間 | |
PART_NAME | 分區名 | pt=2015-06-12 |
SD_ID | 分區存儲ID | 21 |
TBL_ID | 表ID | 2 |
2、PARTITION_KEYS
該表存儲分區的字段信息。
元數據表字段 | 說明 | 示例數據 |
TBL_ID | 表ID | 2 |
PKEY_COMMENT | 分區字段說明 | |
PKEY_NAME | 分區字段名 | pt |
PKEY_TYPE | 分區字段類型 | string |
INTEGER_IDX | 分區字段順序 | 1 |
3、PARTITION_KEY_VALS
該表存儲分區字段值。
元數據表字段 | 說明 | 示例數據 |
PART_ID | 分區ID | 2 |
PART_KEY_VAL | 分區字段值 | 2015-06-12 |
INTEGER_IDX | 分區字段值順序 | 0 |
4、PARTITION_PARAMS
該表存儲分區的屬性信息。
元數據表字段 | 說明 | 示例數據 |
PART_ID | 分區ID | 2 |
PARAM_KEY | 分區屬性名 | numFiles、numRows |
PARAM_VALUE | 分區屬性值 | 15、502195 |
七、其他不常用的元數據表
- DB_PRIVS
數據庫權限信息表。通過GRANT語句對數據庫授權后,將會在這里存儲。
- IDXS
索引表,存儲Hive索引相關的元數據
- INDEX_PARAMS
索引相關的屬性信息。
- TAB_COL_STATS
表字段的統計信息。使用ANALYZE語句對表字段分析后記錄在這里。
- TBL_COL_PRIVS
表字段的授權信息
- PART_PRIVS
分區的授權信息
- PART_COL_STATS
分區字段的統計信息。
- PART_COL_PRIVS
分區字段的權限信息。
- FUNCS
用戶注冊的函數信息
- FUNC_RU
用戶注冊函數的資源信息