1. 程式人生 > >Hive的架構及元資料表的結構及用途的介紹

Hive的架構及元資料表的結構及用途的介紹

Hive的架構:

下面是一些東西的解釋

JDBC : Java DataBase Connectivity

ODBC : Open DataBase Connectivity    開放資料庫互連,是微軟公司開放服務結構中有關資料庫的一個組成部分,建立了一組規範,提供一組對資料庫訪問的標準API。

Hive元資料庫的中元資料表結構的解釋:

下面介紹一下Hive元資料中一些表的結構及用途:

  1. 儲存Hive版本的元資料表(VERSION)
ER_IDSCHEMA_VERSIONVERSION_COMMENT
ID主鍵Hive版本版本說明
10.13.0Set by MetaStore

如果該表出現問題,根本進入不了Hive-Cli

比如該表不存在,當啟動Hive-Cli時候,就會報錯”Table 'hive.version' doesn't exist“。

    2.Hive資料庫相關的元資料表(DBS、DATABASE_PARAMS)

  • DBS

該表儲存Hive中所有資料庫的基本資訊:

元資料表字段說明示例資料
DB_ID資料庫ID2
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資料庫ID2
PARAM_KEY引數名createdby
PARAM_VALUE引數值lxw1234

DBS和DATABASE_PARAMS這兩張表通過DB_ID欄位關聯。

    3.Hive表和檢視相關的元資料表

主要是TBLS、TABLE_PARAMS、TBL_PRIVS,這三張表通過TBL_ID關聯。

  • TBLS

該表中儲存Hive表、檢視、索引表的基本資訊。

元資料表字段說明示例資料
TBL_ID
表ID1
CREATE_TIME建立時間1436317071
DB_ID資料庫ID2,對應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表ID1
PARAM_KEY屬性名totalSize、numRows、EXTERNAL
PARAM_VALUE屬性值970107336、21231028、TRUE
  • TBL_PRIVS

該表儲存表、檢視的授權資訊。

元資料表字段說明示例資料
TBL_GRANT_ID授權ID1
CREATE_TIME授權時間1436320455
GRANT_OPTION0
GRANTOR授權執行使用者rk
GRANTOR_TYPE授權者型別USER
PRINCIPAL_NAME被授權使用者username
PRINCIPAL_TYPE被授權使用者型別USER
TBL_PRIV許可權Select、Alter
TBL_ID表ID22,對應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儲存資訊ID1
CD_ID欄位資訊ID21,對應CDS表
INPUT_FORMAT檔案輸入格式org.apache.hadoop.mapred.TextInputFormat
IS_COMPRESSED是否壓縮0
IS_STOREDASSUBDIRECTORIES是否以子目錄儲存0
LOCATIONHDFS路徑hdfs://namenode/hivedata/warehouse/ut.db/t_lxw
NUM_BUCKETS分桶數量5
OUTPUT_FORMAT檔案輸出格式org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
SERDE_ID序列化類ID3,對應SERDES表
  • SD_PARAMS

該表儲存Hive儲存的屬性資訊,在建立表時候使用

STORED BY 'storage.handler.class.name'[WITH SERDEPROPERTIES](...)指定

元資料表字段說明示例資料
SD_ID儲存配置ID1
PARAM_KEY儲存屬性名
PARAM_VALUE儲存屬性值
  • SERDES

該表儲存序列化使用的類資訊

元資料表字段說明示例資料
SERDE_ID序列化類配置ID1
NAME序列化類別名
SLIB序列化類org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
  • SERDE_PARAMS

該表儲存序列化得一些屬性、格式資訊,比如:行、列分隔符

元資料表字段說明示例資料
SERDE_ID序列化類配置ID1
PARAM_KEY屬性名field.delim
PARAM_VALUE屬性值,

    5.Hive表字段相關的元資料表

主要涉及COLUMNS_V2

  • COLUMNS_V2

該表儲存表對應的欄位資訊。

元資料表字段說明示例資料
CD_ID欄位資訊ID1
COMMENT欄位註釋
COLUMN_NAME欄位名pt
TYPE_NAME欄位型別string
INTEGER_IDX欄位順序2

    6.Hive表分割槽相關的元資料表

主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

  • PARTITIONS

該表儲存表分割槽的基本資訊。

元資料表字段說明示例資料
PART_ID分割槽ID1
CREATE_TIME分割槽建立時間
LAST_ACCESS_TIME最後一次訪問時間
PART_NAME分割槽名pt=2015-06-12
SD_ID分割槽儲存ID21
TBL_ID表ID2
  • PARTITION_KEYS

該表儲存分割槽的欄位資訊

元資料表字段說明示例資料
TBL_ID表ID2
PKEY_COMMENT分割槽欄位說明
PKEY_NAME分割槽欄位名pt
PKEY_TYPE分割槽欄位型別string
INTEGER_IDX分割槽欄位順序1
  • PARTITION_KEY_VALS

該表儲存分割槽欄位值。

元資料表字段說明示例資料
PART_ID分割槽ID2
PART_KEY_VAL分割槽欄位值2015-06-12
INTEGER_IDX分割槽欄位值順序0
  • PARTITION_PARAMS

該表儲存分割槽的屬性資訊。

元資料表字段說明示例資料
PART_ID分割槽ID2
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

使用者註冊函式的資源資訊