如果我想在本地运行Flink应用程序,直接在Intellij内运行,但是我需要指定config params(比如fs.hdfs.hdfssite来设置S3访问权限),有没有其他方法可以提供这些除ExecutionEnvironment.createLocalEnvironment(conf)
之外的配置参数?如果我想使用StreamExecutionEnvironment.getExecutionEnvironment
怎么办?我可以在项目中使用Flink配置并将本地应用程序指向它吗?
这是正确的方法吗?或者你会设置你的IDE来将应用程序提交给真正的本地Flink实例吗?
答案 0 :(得分:4)
要创建包含配置选项的StreamExecutionEnvironment
,请使用此调用StreamExecutionEnvironment.createLocalEnvironment(int parallelism, Configuration configuration)
答案 1 :(得分:2)
我可以通过在IntelliJ运行配置中提供ENV_VAR FLINK_CONF_DIR 来加载flink-conf.yaml文件。
答案 2 :(得分:1)
您可以使用StreamExecutionEnvironment.getExecutionEnvironment()
- 它将找出当前设置,如果在IDE中执行将返回“LocalEnvironemnt”。
因此,应该能够使用conf/flink-conf.yaml
来设置配置值。
答案 3 :(得分:0)
将以下依赖项添加到您的 pom.xml:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-metrics-jmx_2.11</artifactId>
<version>${flink.version}</version>
</dependency>
然后更改您的作业以使用以下 StreamExecutionEnvironment:
Properties props = new Properties();
props.put("metrics.reporter.jmx.factory.class", "org.apache.flink.metrics.jmx.JMXReporterFactory");
Configuration conf = ConfigurationUtils.createConfiguration(props);
StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(conf);
如果您更喜欢使用 createLocalEnvironment
,它的工作方式相同,但没有 Flink 仪表板。
在此 blog post 中,您可以找到一个演示,包括源代码和屏幕截图。