hive系列之六-hive元數(shù)據(jù)表結(jié)構(gòu)詳解
Hive自己維護(hù)了一套元數(shù)據(jù)稍坯,用戶通過HQL查詢時(shí)候,Hive首先需要結(jié)合元數(shù)據(jù)嵌赠,將HQL翻譯成MapReduce去執(zhí)行卸亮。本文介紹一下Hive元數(shù)據(jù)中重要的一些表結(jié)構(gòu)及用途忽妒,以Hive0.13為例。
1.version
存儲(chǔ)Hive版本的元數(shù)據(jù)表(VERSION)
VER_ID | SCHEMA_VERSION | VERSION_COMMENT |
---|---|---|
ID主鍵 | Hive版本 | 版本說明 |
1 | 0.13.0 | Set by MetaStore |
如果該表出現(xiàn)問題,根本進(jìn)入不了Hive-Cli段直。
比如該表不存在吃溅,當(dāng)啟動(dòng)Hive-Cli時(shí)候,就會(huì)報(bào)錯(cuò)”Table ‘hive.version’ doesn’t exist”鸯檬。
2.數(shù)據(jù)庫相關(guān)的元數(shù)據(jù)表
- DBS
該表存儲(chǔ)Hive中所有數(shù)據(jù)庫的基本信息决侈,字段如下:
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
DB_ID | 數(shù)據(jù)庫ID | 2 |
DESC | 數(shù)據(jù)庫描述 | 測(cè)試庫 |
DB_LOCATION_URI | 數(shù)據(jù)庫HDFS路徑 | hdfs://namenode/user/hive/warehouse/lxw1234.db |
NAME | 數(shù)據(jù)庫名 | lxw1234 |
OWNER_NAME | 數(shù)據(jù)庫所有者用戶名 | lxw1234 |
OWNER_TYPE | 所有者角色 | USER |
- DATABASE_PARAMS
該表存儲(chǔ)數(shù)據(jù)庫的相關(guān)參數(shù),在CREATE DATABASE時(shí)候用
WITH DBPROPERTIES (property_name=property_value, …)指定的參數(shù)喧务。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
DB_ID | 數(shù)據(jù)庫ID | 2 |
PARAM_KEY | 參數(shù)名 | createdby |
PARAM_VALUE | 參數(shù)值 | lxw1234 |
DBS和DATABASE_PARAMS這兩張表通過DB_ID字段關(guān)聯(lián)赖歌。
3.表/視圖相關(guān)元數(shù)據(jù)表
主要有TBLS、TABLE_PARAMS功茴、TBL_PRIVS庐冯,這三張表通過TBL_ID關(guān)聯(lián)。
- TBLS
該表中存儲(chǔ)Hive表坎穿、視圖肄扎、索引表的基本信息。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
TBL_ID | 表ID | 1 |
CREATE_TIME | 創(chuàng)建時(shí)間 | 1436317071 |
DB_ID | 數(shù)據(jù)庫ID | 2赁酝,對(duì)應(yīng)DBS中的DB_ID |
LAST_ACCESS_TIME | 上次訪問時(shí)間 | 1436317071 |
OWNER | 所有者 | liuxiaowen |
RETENTION | 保留字段 | 0 |
SD_ID | 序列化配置信息 | 86,對(duì)應(yīng)SDS表中的SD_ID |
TBL_NAME | 表名 | lxw1234 |
TBL_TYPE | 表類型 | MANAGED_TABLE旭等、EXTERNAL_TABLE酌呆、INDEX_TABLE、VIRTUAL_VIEW |
VIEW_EXPANDED_TEXT | 視圖的詳細(xì)HQL語句 | select lxw1234 .pt , lxw1234 .pcid from liuxiaowen .lxw1234
|
VIEW_ORIGINAL_TEXT | 視圖的原始HQL語句 | select * from lxw1234 |
- TABLE_PARAMS
該表存儲(chǔ)表/視圖的屬性信息搔耕。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
TBL_ID | 表ID | 1 |
PARAM_KEY | 屬性名 | totalSize隙袁、numRows、EXTERNAL |
PARAM_VALUE | 屬性值 | 970107336弃榨、21231028菩收、TRUE |
- TBL_PRIVS
該表存儲(chǔ)表/視圖的授權(quán)信息
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
TBL_GRANT_ID | 授權(quán)ID | 1 |
CREATE_TIME | 授權(quán)時(shí)間 | 1436320455 |
GRANT_OPTION | 0 | |
GRANTOR | 授權(quán)執(zhí)行用戶 | liuxiaowen |
GRANTOR_TYPE | 授權(quán)者類型 | USER |
PRINCIPAL_NAME | 被授權(quán)用戶 | username |
PRINCIPAL_TYPE | 被授權(quán)用戶類型 | USER |
TBL_PRIV | 權(quán)限 | Select、Alter |
TBL_ID | 表ID | 22鲸睛,對(duì)應(yīng)TBLS表中的TBL_ID |
4.文件存儲(chǔ)信息相關(guān)的元數(shù)據(jù)表
主要涉及SDS娜饵、SD_PARAMS、SERDES官辈、SERDE_PARAMS
由于HDFS支持的文件格式很多箱舞,而建Hive表時(shí)候也可以指定各種文件格式,Hive在將HQL解析成MapReduce時(shí)候拳亿,需要知道去哪里晴股,使用哪種格式去讀寫HDFS文件,而這些信息就保存在這幾張表中肺魁。
- SDS
該表保存文件存儲(chǔ)的基本信息电湘,如INPUT_FORMAT、OUTPUT_FORMAT、是否壓縮等寂呛。
TBLS表中的SD_ID與該表關(guān)聯(lián)怎诫,可以獲取Hive表的存儲(chǔ)信息。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
SD_ID | 存儲(chǔ)信息ID | 1 |
CD_ID | 字段信息ID | 21昧谊,對(duì)應(yīng)CDS表 |
INPUT_FORMAT | 文件輸入格式 | org.apache.hadoop.mapred.TextInputFormat |
IS_COMPRESSED | 是否壓縮 | 0 |
IS_STOREDASSUBDIRECTORIES | 是否以子目錄存儲(chǔ) | 0 |
LOCATION | HDFS路徑 | hdfs://namenode/hivedata/warehouse/ut.db/t_lxw |
NUM_BUCKETS | 分桶數(shù)量 | 5 |
OUTPUT_FORMAT | 文件輸出格式 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |
SERDE_ID | 序列化類ID | 3刽虹,對(duì)應(yīng)SERDES表 |
- SD_PARAMS
該表存儲(chǔ)Hive存儲(chǔ)的屬性信息,在創(chuàng)建表時(shí)候使用
STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定呢诬。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
SD_ID | 存儲(chǔ)配置ID | 1 |
PARAM_KEY | 存儲(chǔ)屬性名 | |
PARAM_VALUE | 存儲(chǔ)屬性值 |
- SERDES
該表存儲(chǔ)序列化使用的類信息
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
SERDE_ID | 序列化類配置ID | 1 |
NAME | 序列化類別名 | |
SLIB | 序列化類 | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe |
- SERDE_PARAMS
該表存儲(chǔ)序列化的一些屬性涌哲、格式信息,比如:行、列分隔符
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
SERDE_ID | 序列化類配置ID | 1 |
PARAM_KEY | 屬性名 | field.delim |
PARAM_VALUE | 屬性值 | , |
5.表字段相關(guān)的元數(shù)據(jù)
主要涉及COLUMNS_V2
- COLUMNS_V2
該表存儲(chǔ)表對(duì)應(yīng)的字段信息尚镰。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
CD_ID | 字段信息ID | 1 |
COMMENT | 字段注釋 | |
COLUMN_NAME | 字段名 | pt |
TYPE_NAME | 字段類型 | string |
INTEGER_IDX | 字段順序 | 2 |
6.表分區(qū)相關(guān)的數(shù)據(jù)表
主要涉及PARTITIONS阀圾、PARTITION_KEYS、PARTITION_KEY_VALS狗唉、PARTITION_PARAMS
- PARTITIONS
該表存儲(chǔ)表分區(qū)的基本信息初烘。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
PART_ID | 分區(qū)ID | 1 |
CREATE_TIME | 分區(qū)創(chuàng)建時(shí)間 | |
LAST_ACCESS_TIME | 最后一次訪問時(shí)間 | |
PART_NAME | 分區(qū)名 | pt=2015-06-12 |
SD_ID | 分區(qū)存儲(chǔ)ID | 21 |
TBL_ID | 表ID | 2 |
- PARTITION_KEYS
該表存儲(chǔ)分區(qū)的字段信息。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
TBL_ID | 表ID | 2 |
PKEY_COMMENT | 分區(qū)字段說明 | |
PKEY_NAME | 分區(qū)字段名 | pt |
PKEY_TYPE | 分區(qū)字段類型 | string |
INTEGER_IDX | 分區(qū)字段順序 | 1 |
- PARTITION_KEY_VALS
該表存儲(chǔ)分區(qū)字段值分俯。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
PART_ID | 分區(qū)ID | 2 |
PART_KEY_VAL | 分區(qū)字段值 | 2015-06-12 |
INTEGER_IDX | 分區(qū)字段值順序 | 0 |
- PARTITION_PARAMS
該表存儲(chǔ)分區(qū)的屬性信息肾筐。
元數(shù)據(jù)表字段 | 說明 | 示例數(shù)據(jù) |
---|---|---|
PART_ID | 分區(qū)ID | 2 |
PARAM_KEY | 分區(qū)屬性名 | numFiles、numRows |
PARAM_VALUE | 分區(qū)屬性值 | 15缸剪、502195 |
7.其他
- DB_PRIVS
數(shù)據(jù)庫權(quán)限信息表吗铐。通過GRANT語句對(duì)數(shù)據(jù)庫授權(quán)后,將會(huì)在這里存儲(chǔ)杏节。
- IDXS
索引表唬渗,存儲(chǔ)Hive索引相關(guān)的元數(shù)據(jù)
- INDEX_PARAMS
索引相關(guān)的屬性信息。
- TAB_COL_STATS
表字段的統(tǒng)計(jì)信息奋渔。使用ANALYZE語句對(duì)表字段分析后記錄在這里镊逝。
- TBL_COL_PRIVS
表字段的授權(quán)信息
- PART_PRIVS
分區(qū)的授權(quán)信息
- PART_COL_STATS
分區(qū)字段的統(tǒng)計(jì)信息。
- PART_COL_PRIVS
分區(qū)字段的權(quán)限信息嫉鲸。
- FUNCS
用戶注冊(cè)的函數(shù)信息
- FUNC_RU
用戶注冊(cè)函數(shù)的資源信息