其他分享
首页 > 其他分享> > 如何在flink环境下初始化flink作业的spring资源

如何在flink环境下初始化flink作业的spring资源

作者:互联网

我最近遇到了一些关于开发flink作业的问题,这些问题引入了spring和hibernate,而且这个工作将在flink集群上运行.所以我需要在任务管理器而不是作业管理器上运行flink操作符之前初始化spring资源.但是我找不到任何合适的StreamExecutionEnvironment方法来做到这一点.

我尝试了下面这样的方法:

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
// etl business logic as flink operators
FlinkOperators.run();  
env.execute();

但是,当执行并行性多于一的flink作业时,弹出初始化将不在每个任务管理器进程中.所以我不能在眨眼工作中使用弹簧.

有什么方法可以在flink作业上初始化spring资源吗?

谢谢.

最好的祝福.

阿尔文

解决方法:

每次需要为每个任务管理器进行某种上下文初始化时,构建一个静态函数(如果使用scala,则在对象内部的函数),将这些初始化值存储在静态变量中.

这应该足够了,因为静态值存储在每个任务管理器的内存中.

我使用这个方法在每个任务管理器中加载属性文件,这些属性文件包含每个作业配置.如果要加载文件,请检查每个任务管理器是否包含要加载的文件的副本.

标签:spring,apache-flink
来源: https://codeday.me/bug/20190711/1429309.html