[原创] Flink Catalog 小结

Catalog 是什么

类似于 Hive 的 MetaStore,用来管理 Flink SQL 表的元数据信息。

Catalog 可以放在哪里

  • 内存:Flink 任务重启后,就失效了,需要重建。
  • 放在 Hive 中:通过使用 Flink 的 Hive Catalog,可以将 Flink 的元数据信息存放到 Hive 的 MetaStore 中进行持久化保存。这样Flink 任务重启后,依旧可以找到重启前的 Flink 表的元数据信息,而无需重建。

Catalog 放在 Hive 的功能全解

  • 持久化 Flink 表的元数据信息。
  • Flink 可以通过访问 Hive MetaStore,访问操作属于 Hive 的表,也可以使用 Flink SQL 直接在 Hive 上创建属于 Hive 的表。

上面两处“属于 Hive 的表”的说明:前者侧重指,原本在 Hive 上就已经存在的 Hive 表;后者侧重指,后续插入数据时,数据是存放在 Hive 上,当然该表也可以被 Hive 本身访问操作。

Hive Catalog 环境下 Flink SQL 创建的表如何判定该表是属于 Flink 的还是属于 Hive 的

  • 方式一:Flink 自己识别你的建表语句符合 Hive 语法,判定该表属于 Hive,后续数据会往 Hive 中写。
  • 方式二:with 中带 'connector'='hive' 参数。
  • 方式三:这也是官方推荐的

It's recommended to use Hive dialect to execute DDLs to create Hive tables, views, partitions, functions within Flink.

创建属于 Hive 的表之前,将当前 Flink SQL 环境切换到 Hive 方言:

SET table.sql-dialect = hive; -- to use Hive dialect
SET table.sql-dialect = default; -- to use Flink default dialect

官方链接:点开后拉到最下面,看 DDL 和 DML 小节

最后,判定 Flink SQL 创建的表是否属于 Flink 还是属于 Hive 等外部数据库的终极标识:dec 创建的表

  • 如果 'is_generic' = 'true' ,属于 Flink
  • 如果 'is_generic' = 'false' ,不属于 Flink
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flink JDBC CatalogFlink提供的一种Catalog类型,它可以用来管理和连接关系型数据库。通过Flink JDBC Catalog,我们可以在Flink应用程序中使用SQL语句来查询和操作数据库表,而无需编写复杂的代码来连接和操作数据库。 使用Flink JDBC Catalog需要以下步骤: 1. 在Flink配置文件中配置JDBC Catalog的连接信息,包括数据库类型、连接地址、用户名、密码等。 2. 在Flink应用程序中注册JDBC Catalog,可以使用如下代码: ``` import org.apache.flink.table.catalog.Catalog; import org.apache.flink.table.catalog.GenericInMemoryCatalog; Catalog catalog = new GenericInMemoryCatalog("my_catalog", "default"); tableEnv.registerCatalog("my_catalog", catalog); tableEnv.useCatalog("my_catalog"); ``` 3. 在JDBC Catalog中创建表,可以使用如下代码: ``` String createTableSql = "CREATE TABLE my_table (\n" + " id INT,\n" + " name STRING\n" + ") WITH (\n" + " 'connector.type' = 'jdbc',\n" + " 'connector.url' = 'jdbc:mysql://localhost:3306/my_db',\n" + " 'connector.table' = 'my_table',\n" + " 'connector.driver' = 'com.mysql.jdbc.Driver',\n" + " 'connector.username' = 'root',\n" + " 'connector.password' = '123456'\n" + ")"; tableEnv.executeSql(createTableSql); ``` 4. 使用SQL语句查询JDBC Catalog中的表,可以使用如下代码: ``` String querySql = "SELECT id, name FROM my_table"; Table resultTable = tableEnv.sqlQuery(querySql); ``` 以上就是使用Flink JDBC Catalog的基本步骤,具体可以根据实际情况进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值