Flink系列--Flink catalog
Catalog 提供了元数据信息,例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。
数据处理最关键的方面之一是管理元数据。 元数据可以是临时的,例如临时表、或者通过 TableEnvironment 注册的 UDF。 元数据也可以是持久化的,例如 Hive Metastore 中的元数据。Catalog 提供了一个统一的API,用于管理元数据,并使其可以从 Table API 和 SQL 查询语句中来访问。
简单来说,Catalog 就是元数据管理中心,其中元数据包括数据库、表、表结构等信息
从上图我们可以看到 Catalog 的最终实现有三个类:
- HiveCatalog:使用 Hive 的元数据来作为 Flink 的 HiveCatalog
- GenericInMemoryCatalog:使用内存实现 Catalog
- JdbcCatalog:使用其他支持 jdbc 协议的关系型数据库来存储元数据
- PostgresCatalog:使用 Postgres 数据库来作为 Catalog 存储元数据
示例: hiveCatalog的使用
// 环境准备 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); /** * 创建 hivecatalog * * my_hive catalog 名称(随意 * database 指定数据库 * dir/ 配置hive-site.xml 的目录。 */ HiveCatalog hiveCatalog = new HiveCatalog("my_hive", "database", "dir/"); /** * 注册Catalog * my_hive2 名称随意,通常和 new HiveCatalog 中的一致 */ tableEnv.registerCatalog("my_hive2",hiveCatalog); /** * 指定数据库,查询 * my_hive tableEnv.registerCatalog 中指定的 * gmall :库名 * student:表名 */ tableEnv.sqlQuery("select * from my_hive2.database.student").execute().print();
tableEnv.useCatalog("my_hive2");
tableEnv.useDatabase("database");
本文来自博客园,作者:life_start,转载请注明原文链接:https://www.cnblogs.com/yangh2016/p/16715923.html