Hive Metastore表結構設計分析


圍繞hive的metastore的表結構進行分析:

Database

DBS表:column有DB_ID, DESC, DB_LOCATION_URI, NAME, OWNER_NAME, OWNER_TYPE 表示基本的DB信息,其中DB_ID是主鍵,關聯的表有 FUNC_RU, FUNCS, DB_PRIVS, DATABASE_PARAMS和TBLS

其中FUNC表是用來存儲udf的基本信息,一個UDF只能對應一個庫下的表,FUNC_RU表,用來存儲udf的類型以及執行的路徑

DB_PRIVS表記錄該DB下的權限記錄信息。

DATABASE_PARAMS表記錄DB的一些擴展信息,便於進行特殊屬性的擴展,comment, owner, lastaccesstime, readtime

TBLS表記錄該DB下面的所有TABLE的信息,對應唯一的DB_ID.

Table

TBLS表 TBL_ID, CREATE_TIME, DB_ID, LAST_ACCESS_TIME, OWNER,RETENTION, SD_ID, TBL_NAME, TBL_TYPE, VIEW_EXPANDED_TEXT, VIEW_ORIGNAL_TEXT

首先,TBLS表,這個表主要記錄了table的一些基本信息,包括表名、創建時間、類型,以及SD_ID等信息。tbl_id爲TBLS的主鍵,同時也是TABLE_PARAMS、TBL_PRIVS、TBL_COL_PRIVS、TAB_COL_STATS、SDS、PARTITIONS、PARTITION_KEYS、IDXS表的外鍵。

每個TBLS都對應唯一的DB_ID,取決於你在哪個db下創建的表。在創建表寫入meta的同時,也會創建相應的物理路徑。同時會在SDS表中加入DDL時設置的input output、表的location以及SERDE信息(具體下面再說)

TBL_PRIVS、TBL_COL_PRIVS表記錄該hive表的表及列權限認證信息。PARTITIONS表記錄該表的DDL分區的信息,對於PARTITION_KEYS以及PARTITION_VALUES都是用於PartName的拼接獲取。

(IDXS 與 TAB_COL_STATS還沒有深入研究,後續添加)

Partitions

PARTITIONS表,通過表名也能纔想到,它是partition分區存儲的元數據信息。

PART_ID爲PARTITIONS表的主鍵,同時也是PART_COL_STATS、PART_PRIVS、PARTITION_KEY_VALS、PARTITION_PARAMS、DATABASE_PARAMS表的外鍵。

Partition表在metastore中是相當重要的表,關係到partition的元數據存取

SDS

SDS 表 Columns:SD_ID、CD_ID、INPUT_FORMAT、IS_COMPRESSED、IS_STOREDASSUBDIRECTORIES、LOCATION\NUM_BUCKETS、OUTPUT_FORMAT、SERDE_ID

SDS表主要包含計算引擎運行時需要的input與output 、location路徑以及序列化的class信息。SD_ID爲該表的主鍵,同時也是PARTITIONS、BUCKETING_COLS、SKEWD_COL_NAMES、SD_PARAMS、SORT_COLS、SKEWED_VALUES、IDXS的外鍵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章