Flink Catalog

概念

Catalog 提供了元數據信息,例如數據庫、表、分區、視圖以及數據庫或其他外部系統中存儲的函數和信息。

數據處理最關鍵的方面之一是管理元數據。 元數據可以是臨時的,例如臨時表、或者通過 TableEnvironment 註冊的 UDF。 元數據也可以是持久化的,例如 Hive Metastore 中的元數據。Catalog 提供了一個統一的API,用於管理元數據,並使其可以從 Table API 和 SQL 查詢語句中來訪問。

Catalog類型

OTOyK1.png

  • GenericInMemoryCatalog

基於內存實現,所有元數據只在 session 的生命週期內可用

  • JdbcCatalog

可以將 Flink 通過 JDBC 協議連接到關係數據庫。Postgres Catalog 和 MySQL Catalog 是目前 JDBC Catalog 僅有的兩種實現

  • HiveCatalog

作爲原生 Flink 元數據的持久化存儲,以及作爲讀寫現有 Hive 元數據的接口

  • 用戶自定義 Catalog

用戶可以通過實現 Catalog 接口來開發自定義 Catalog,除了需要實現自定義的 Catalog 之外,還需要爲這個 Catalog 實現對應的 CatalogFactory 接口

設計

OTXweP.md.png

新的 Catalog 有三層結構,最頂層是 Catalog 的名字,中間一
層是 Database,最底層是各種 MetaObject,如 Table,Partition,Function 等

Catalog

  • 支持 Create,Drop,List,Alter,Exists 等語句
  • 支持對 Database,Table,View, Partition,Function,Statistics等的操作

CatalogManager 正如它名字一樣,主要是用來管理 Catalog。

CatalogManager 支持的操作包括:

  • 註冊 Catalog(registerCatalog)
  • 獲取所有的 Catalog(getCatalogs)
  • 獲取特定的 Catalog(getCatalog)
  • 獲取當前的 Catalog(getCurrentCatalog)
  • 設置當前的 Catalog(setCurrentCatalog)
  • 獲取當前的 Database(getCurrentDatabase)
  • 設置當前的 Database(setCurrentDatabase)

參考

  1. https://nightlies.apache.org/flink/flink-docs-master/zh/docs/dev/table/catalogs/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章