如果我想直接从 Intellij 中在本地运行 Flink 应用程序,但我需要指定配置参数(如 fs.hdfs.hdfssite 来设置 S3 访问),除了 ExecutionEnvironment.createLocalEnvironment(conf)
之外,还有其他方法可以提供这些配置参数吗?如果我想使用StreamExecutionEnvironment.getExecutionEnvironment
怎么办?我可以在我的项目中有一个 Flink 配置并将本地应用程序指向它吗?
这是正确的方法吗?或者你会设置 IDE 以将应用程序提交到真正的本地 Flink 实例吗?
要使用配置选项创建StreamExecutionEnvironment
,请使用此调用StreamExecutionEnvironment.createLocalEnvironment(int parallelism, Configuration configuration)
我可以通过在 IntelliJ 运行配置中提供ENV_VAR FLINK_CONF_DIR来加载 flink-conf.yaml 文件
StreamExecutionEnvironment.getExecutionEnvironment()
- 它将找出当前设置,如果在IDE中执行,将返回"LocalEnvironemnt"。
因此,应该能够使用conf/flink-conf.yaml
来设置您的配置值。
将以下依赖项添加到您的 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 仪表板。
在这篇博文中,您可以找到一个演示,包括源代码和屏幕截图。