问题描述
我们的项目中有 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
。