哪位大神知道,flink 在新任务中,如何获取之前任务中已经创建过的表? #Flink
flink的Table&SQL API 建表都会存在对应的 catalog 的 database 中。默认情况下,使用的是 org.apache.flink.table.catalog.GenericInMemoryCatalog 你注册的souce表也好,sink表也好,中间创建的table或者view也好,都会注册在这个catalog中,也就是内存中,任务结束,信息不会被保存
如果你想跨flink session使用表。 比如我提前创建好source表的表结构,如kafakSource,然后其他任务就不用再很麻烦的重新注册这个kafkasource表的话。 需要自己实现一个 catalog 类,将注册的表信息写道mysql中或者其他持久化存储中。 这样任何的flink任务,只要使用你自己实现的catalog,就可以获取定义好的表。
可以看下我这个flink与hive集成时的demo,flink自带的hive的catalog就是这么做的,只不过更复杂 https://github.com/935205406/flink-hive-integration-demo/blob/master/src/main/java/com/example/flink/HiveWriteDemo.java
赞0
踩0