Hive metastore表結構設計分析

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

  那麼咱們從hive metastore的表結構設計開始:設計

  

 

  看到後,是否是有一種想死的衝動?沒錯,我也想死,可是咱們能夠一點一點的看,也會有理解錯誤,但這都是在咱們通向精通的路途之上,不是麼?那麼咱們圍繞着幾個核心主表進行分析。3d

     一、DBS 表  Columns:DB_ID、DESC、DB_LOCATION_URI、NAME、OWNER_NAME、OWNER_TYPE blog

 

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

  通常來講,在hive meta初始化時都會自動建立一個名叫default的庫,隨後經過業務發展以及數據治理等需求,可進行不一樣業務域庫的劃分。input

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

  DB_PRIVS 表記錄該DB下的權限記錄信息,具體沒怎麼研究,由於如今更多的集成開源的相似於sentry、range等成熟的權限框架。博客

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

  TBLS 表天然是記錄該DB下的全部Table信息。對應惟一的DB_ID。io

  

  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篇)

 

  四、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~

相關文章
相關標籤/搜索