哪位大神知道,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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。