flink ExecutionEnvironment-本地环境(用于单机测试):

时间:2024-06-01 07:24:48
ExecutionEnvironment env = ExecutionEnvironment.createLocalEnvironment();

在 Apache Flink 中,ExecutionEnvironment 是程序执行的入口点,用于设置和执行 Flink 作业。ExecutionEnvironment.createLocalEnvironment() 方法用于创建一个本地执行环境,这意味着 Flink 作业将在你的本地 JVM 中运行,而不是在集群环境中。

下面是对 ExecutionEnvironment.createLocalEnvironment() 的详细解释:

  1. 创建本地环境:
  • 当调用 ExecutionEnvironment.createLocalEnvironment() 时,实际上是在告诉 Flink:“我想在本地机器上运行这个 Flink 作业,而不是在集群上。”## 集群环境(用于生产环境):
  • 这对于开发和测试非常有用,因为它允许在没有集群设置的情况下快速验证 Flink 作业。
  1. 使用示例:
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 崩溃或性能下降。