![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/83384a0a7b7383e3244f3225b9da8d2d.jpeg)
1.概述
今天有个需求。Flink 写了一个程序 使用的是本地的文件做checkpoint 然后,我想本地直接运行 从某个检查点恢复,就想直接idea下运行,不用 flink run 这个命令去运行,有办法吗?
后来发现这篇文章:调试Local模式下带状态的Flink任务
如果使用命令行提交任务的话,可以使用-s参数指定savepoint的目录,那么如果在IDEA里开发测试时如何指定呢?
2. 不友好的方法
2.1 实现思路
首先讲一下思路,当执行env.execute(“EventCounterJob”)时,程序会根据不同的执行环境选择不同的StreamExecutionEnvironment,flink里有两种执行环境:LocalStreamEnvironment和RemoteStreamEnvironment,当我们在IDEA直接运行时,使用的是LocalStreamEnvironment。通过查看RemoteStreamEnvironment的源码可以发现,它最终在构造JobGraph的时候,会将SavepointRestoreSettings的配置通过JobGraph的setSavepointRestoreSettings方法传入到JobGraph中。而在LocalStreamEnvironment