Hive的架構及元資料表的結構及用途的介紹
Hive的架構:
下面是一些東西的解釋
JDBC : Java DataBase Connectivity
ODBC : Open DataBase Connectivity 開放資料庫互連,是微軟公司開放服務結構中有關資料庫的一個組成部分,建立了一組規範,提供一組對資料庫訪問的標準API。
Hive元資料庫的中元資料表結構的解釋:
下面介紹一下Hive元資料中一些表的結構及用途:
- 儲存Hive版本的元資料表(VERSION)
ER_ID | SCHEMA_VERSION | VERSION_COMMENT |
ID主鍵 | Hive版本 | 版本說明 |
1 | 0.13.0 | Set by MetaStore |
如果該表出現問題,根本進入不了Hive-Cli
比如該表不存在,當啟動Hive-Cli時候,就會報錯”Table 'hive.version' doesn't exist“。
2.Hive資料庫相關的元資料表(DBS、DATABASE_PARAMS)
- 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 |
- 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欄位關聯。
3.Hive表和檢視相關的元資料表
主要是TBLS、TABLE_PARAMS、TBL_PRIVS,這三張表通過TBL_ID關聯。
- 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 |
- TABLE_PARAMS
該表儲存表、檢視的屬性資訊。
元資料表字段 | 說明 | 示例資料 |
TBL_ID | 表ID | 1 |
PARAM_KEY | 屬性名 | totalSize、numRows、EXTERNAL |
PARAM_VALUE | 屬性值 | 970107336、21231028、TRUE |
- TBL_PRIVS
該表儲存表、檢視的授權資訊。
元資料表字段 | 說明 | 示例資料 |
TBL_GRANT_ID | 授權ID | 1 |
CREATE_TIME | 授權時間 | 1436320455 |
GRANT_OPTION | 0 | |
GRANTOR | 授權執行使用者 | rk |
GRANTOR_TYPE | 授權者型別 | USER |
PRINCIPAL_NAME | 被授權使用者 | username |
PRINCIPAL_TYPE | 被授權使用者型別 | USER |
TBL_PRIV | 許可權 | Select、Alter |
TBL_ID | 表ID | 22,對應TBLS表中的TBL_ID |
4.Hive檔案儲存資訊相關的元資料表
主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS
由於HDFS支援的檔案格式很多,而建Hive表時候也可以指定各種檔案格式,Hive在將HQL解析成MapReduce時候,需要知道去哪裡,使用哪種格式去讀寫HDFS檔案,而這些資訊就儲存在這幾張表中。
- 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表 |
- SD_PARAMS
該表儲存Hive儲存的屬性資訊,在建立表時候使用
STORED BY 'storage.handler.class.name'[WITH SERDEPROPERTIES](...)指定
元資料表字段 | 說明 | 示例資料 |
SD_ID | 儲存配置ID | 1 |
PARAM_KEY | 儲存屬性名 | |
PARAM_VALUE | 儲存屬性值 |
- SERDES
該表儲存序列化使用的類資訊
元資料表字段 | 說明 | 示例資料 |
SERDE_ID | 序列化類配置ID | 1 |
NAME | 序列化類別名 | |
SLIB | 序列化類 | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe |
- SERDE_PARAMS
該表儲存序列化得一些屬性、格式資訊,比如:行、列分隔符
元資料表字段 | 說明 | 示例資料 |
SERDE_ID | 序列化類配置ID | 1 |
PARAM_KEY | 屬性名 | field.delim |
PARAM_VALUE | 屬性值 | , |
5.Hive表字段相關的元資料表
主要涉及COLUMNS_V2
- COLUMNS_V2
該表儲存表對應的欄位資訊。
元資料表字段 | 說明 | 示例資料 |
CD_ID | 欄位資訊ID | 1 |
COMMENT | 欄位註釋 | |
COLUMN_NAME | 欄位名 | pt |
TYPE_NAME | 欄位型別 | string |
INTEGER_IDX | 欄位順序 | 2 |
6.Hive表分割槽相關的元資料表
主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS
- PARTITIONS
該表儲存表分割槽的基本資訊。
元資料表字段 | 說明 | 示例資料 |
PART_ID | 分割槽ID | 1 |
CREATE_TIME | 分割槽建立時間 | |
LAST_ACCESS_TIME | 最後一次訪問時間 | |
PART_NAME | 分割槽名 | pt=2015-06-12 |
SD_ID | 分割槽儲存ID | 21 |
TBL_ID | 表ID | 2 |
- PARTITION_KEYS
該表儲存分割槽的欄位資訊
元資料表字段 | 說明 | 示例資料 |
TBL_ID | 表ID | 2 |
PKEY_COMMENT | 分割槽欄位說明 | |
PKEY_NAME | 分割槽欄位名 | pt |
PKEY_TYPE | 分割槽欄位型別 | string |
INTEGER_IDX | 分割槽欄位順序 | 1 |
- PARTITION_KEY_VALS
該表儲存分割槽欄位值。
元資料表字段 | 說明 | 示例資料 |
PART_ID | 分割槽ID | 2 |
PART_KEY_VAL | 分割槽欄位值 | 2015-06-12 |
INTEGER_IDX | 分割槽欄位值順序 | 0 |
- PARTITION_PARAMS
該表儲存分割槽的屬性資訊。
元資料表字段 | 說明 | 示例資料 |
PART_ID | 分割槽ID | 2 |
PARAM_KEY | 分割槽屬性名 | numFiles、numRows |
PARAM_VALUE | 分割槽屬性值 | 15、502195 |
7.其他不常用的元資料表
- DB_PRIVS
資料庫許可權資訊表。通過GRANT語句對資料庫授權後,將會在這裡儲存。
- IDXS
索引表,儲存Hive索引相關的元資料
- INDEX_PARAMS
索引相關的屬性資訊
- TAB_COL_STATS
表字段的統計資訊。使用ANALYZE語句對錶欄位分析後記錄在這裡。
- TBL_COL_PRIVS
表字段的授權資訊
- PART_PARIVS
分割槽的授權資訊
- PART_COL_STATS
分割槽欄位的統計資訊
- PART_COL_PRIVS
分割槽欄位的許可權資訊
- FUNCS
使用者註冊的函式資訊
- FUNC_RU
使用者註冊函式的資源資訊