Hive metastore表結構設計分析


  今天總結下,Hive metastore的結構設計。什么是metadata呢,對於它的描述,可以理解為數據的數據,主要是描述數據的屬性的信息。它是用來支持如存儲位置、歷史數據、資源查找、文件記錄等功能。元數據算是一種電子式目錄。為了達到編制目錄的目的,必須在描述並收藏數據的內容或特色,進而達成協助數據檢索的目的。

  那么我們從hive metastore的表結構設計開始:

  

 

  看到后,是不是有一種想死的沖動?沒錯,我也想死,但是我們可以一點一點的看,也會有理解錯誤,但這都是在我們通向精通的路途之上,不是么?那么我們圍繞着幾個核心主表進行分析。

     1、DBS 表  Columns:DB_ID、DESC、DB_LOCATION_URI、NAME、OWNER_NAME、OWNER_TYPE 

 

  DBS 表記錄基本的db信息,其中DB_ID為其主鍵,同時也是FUNC_RU、FUNCS、DB_PRIVS、DATABASE_PARAMS、以及TBLS的外鍵。

  一般來說,在hive meta初始化時都會自動創建一個名叫default的庫,隨后通過業務發展以及數據治理等需求,可進行不同業務域庫的划分。

  FUNC 表是用來存儲udf的基本信息,一個UDF只能對應一個庫下的表。FUNC_RU表,用於存儲該udf的類型及指向的路徑。

  DB_PRIVS 表記錄該DB下的權限記錄信息,具體沒怎么研究,因為現在更多的集成開源的類似於sentry、range等成熟的權限框架。

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

  TBLS 表自然是記錄該DB下的所有Table信息。對應唯一的DB_ID。

  

  2、TBLS 表 Columns: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_COL_PRIVS、IDXS、TBL_PRIVS、SDS、PARTITIONS、PARTITION_KEYS、TAB_COL_STATS表的外鍵。

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

  TBL_PRIVS、TBL_COL_PRIVS表記錄該hive表的表及列權限認證信息。PARTITIONS表記錄該表的DDL分區的信息,對於PARTITION_KEYS以及PARTITION_VALUES都是用於PartName的拼接獲取。(可查看本博客 hive metadata源碼解析)

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

 

  3、PARTITIONS 表 Columns:PART_ID、CREATE_TIME、LAST_ACCESS_TIME、PART_NAME、SD_ID、TBL_ID

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

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

     Partition表在metastore中是相當重要的表,關系到partition的元數據存取(具體可參考本博客hive metastore partition篇)

 

  4、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的外鍵。

   今天大概先梳理到這里,后面我們從代碼層面詳細分析。新年快樂~o(* ̄︶ ̄*)o~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM