ExecutionEnvironment env = ExecutionEnvironment.createLocalEnvironment();
在 Apache Flink 中,ExecutionEnvironment 是程序执行的入口点,用于设置和执行 Flink 作业。ExecutionEnvironment.createLocalEnvironment() 方法用于创建一个本地执行环境,这意味着 Flink 作业将在你的本地 JVM 中运行,而不是在集群环境中。
下面是对 ExecutionEnvironment.createLocalEnvironment() 的详细解释:
- 创建本地环境:
- 当调用 ExecutionEnvironment.createLocalEnvironment() 时,实际上是在告诉 Flink:“我想在本地机器上运行这个 Flink 作业,而不是在集群上。”## 集群环境(用于生产环境):
- 这对于开发和测试非常有用,因为它允许在没有集群设置的情况下快速验证 Flink 作业。
- 使用示例:
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.util.Collector;
public class LocalFlinkExample {
public static void main(String[] args) throws Exception {
// 创建一个本地执行环境
ExecutionEnvironment env = ExecutionEnvironment.createLocalEnvironment();
// 从一个集合中创建一个数据源
DataSet<String> text = env.fromElements("Hello", "World", "Flink");
// 转换数据
DataSet<Integer> lengths = text
.map(new MapFunction<String, Integer>() {
@Override
public Integer map(String value) {
return value.length();
}
});
// 打印结果
lengths.print();
// 执行 Flink 作业
env.execute("Local Flink Example");
}
}
注意:
- 尽管本地环境对于开发和测试很有用,但在生产环境中,你应该使用集群执行环境(如 createRemoteEnvironment() 或使用 Flink 的命令行界面)。
- 本地环境可能不会完全模拟集群环境的行为,因此,在将作业部署到生产集群之前,最好在测试集群中对其进行验证。
- 使用本地环境时,要注意资源限制。由于作业在本地 JVM 中运行,因此可能会受到本地机器资源的限制。如果作业消耗的资源过多,可能会导致本地 JVM 崩溃或性能下降。