本文翻译自官网:Catalogs Beta https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/catalogs.html
Catalogs 提供元数据,例如数据库,表,分区,视图以及访问存储在数据库或其他外部系统中的数据所需的功能和信息。
数据处理的最关键方面之一是管理元数据。它可能是临时元数据,例如临时表,或者是针对表环境注册的 UDF。或永久性元数据,例如Hive Metastore 中的元数据。Catalogs 提供了一个统一的API,用于管理元数据并使其可从 Table API 和 SQL 查询访问。
Catalogs类型
GenericInMemory Catalog
Flink会话始终具有一个名为default_catalog的内置GenericInMemoryCatalog,它具有一个名为default_database的内置默认数据库。 所有临时元数据(例如使用TableEnvironment#registerTable定义的表)均已注册到此目录。
Hive Catalog
HiveCatalog 有两个作用: 作为纯Flink元数据的持久存储,以及作为读写现有Hive元数据的接口。 Flink的Hive文档提供了有关设置 catalog 以及与现有Hive安装接口的完整详细信息。
警告: Hive Metastore以小写形式存储所有元对象名称。这与GenericInMemoryCatalog
区分大小写不同。
用户定义的 Catalog
Catalog 是可插入的,用户可以通过实现Catalog接口来开发自定义 Catalog。 要在SQL CLI中使用自定义 Catalog,用户应通过实现CatalogFactory接口来开发 Catalog 及其相应的 CatalogFactory。
catalog factory 定义了一组属性,用于在 SQL CLI 引导时配置 catalog 。 属性集将传递给发现服务,在该服务中,服务将尝试将这些属性与CatalogFactory匹配并启动相应的 catalog 实例。
Catalog API
注册Catalog
用户可以将其他 Catalog 注册到现有的Flink会话中。
tableEnv.registerCatalog(new CustomCatalog("myCatalog"));
更改当前 Catalog 和数据库
Flink将始终在当前 Catalog 和数据库中搜索表,视图和UDF。
tableEnv.useCatalog("myCatalog");
tableEnv.useDatabase("myDb");
通过以catalog.database.object形式提供标准名称,可以访问不是当前 catalog 中的元数据。
tableEnv.scan("not_the_current_catalog", "not_the_current_db", "my_table");
列出可用 Catalog
tableEnv.listCatalogs();
列出可用的数据库
tableEnv.listDatabases();
列出可用表
tableEnv.listTables();
欢迎关注Flink菜鸟公众号,会不定期更新Flink(开发技术)相关的推文