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

问题描述

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

解决方法

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

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

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);

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

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

flink run -Dstate.checkpoints.dir="/tmp/checkpoints" foo.jar

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...