1. 问题
flinksql 开发,除了sql开发本身,还可能涉及到udf,组件,兑现有包扩展等需求,整一个项目方便开发测试打包版本管理。
2. 框架
2-1. 父模块: flink_parent
没有任何代码, 只有 在pom中有flink开发通用的依赖,供子模块集成。 子模块特有的jar不在这里配置。比如easyrule 模块需要的easyrule包, 没在flink_parent 模块配置,在easyrule子模块配置。
3. 现有包扩展:flink-connector-kafka
在对应版本的 flink-connector-kafka 源码基础上的扩展,在包里增加了一个接口:
@FunctionalInterface
public interface GetTopic {
List<String> getTopic( String param);
}
外部提供这个接口的实现类,并在createtable时调用,就可以根据自定义的函数,返回需要消费的topic。
with (
'connector' = 'kafka',
'topic_function' = 'sql.GetTopic1#11', ----实现类和函数方法的参数
'properties.bootstrap.servers' = '10.86.25.6: