是否可以通过编程方式设置 flink `state.checkpoint.dir` ?

Yar*_*Yar 2 apache-flink flink-statefun

我们的项目中有flink-conf.yaml本地运行。我们希望能够在本地运行 flink 进行测试。我们团队的一部分使用 Mac,另一部分使用 PC。我们想设置state.checkpoint.dir一些普遍接受的路径,最好在用户的主目录下。问题是,是否可以根据我们运行的操作系统以编程方式设置它,如果没有,在此设置中当前用户的主目录是否有一个普遍有效的快捷方式,例如 *NIX 上的“~”?

Dav*_*son 5

下面的示例展示了如何以编程方式设置 Flink 的配置设置:

Configuration conf = new Configuration();
conf.setString("state.checkpoints.dir", "file:///tmp/checkpoints");

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);
Run Code Online (Sandbox Code Playgroud)

System.getProperty("os.name")会告诉您客户端正在哪个操作系统上运行,对于本地运行来说哪个操作系统应该足够好。

您还可以从命令行设置任何配置参数,例如

flink run -Dstate.checkpoints.dir="/tmp/checkpoints" foo.jar
Run Code Online (Sandbox Code Playgroud)

代码中的设置优先于命令行,命令行又优先于flink-conf.yaml.