

# 执行配置

> 译者：[flink.sojb.cn](https://flink.sojb.cn/)


该`StreamExecutionEnvironment`包含`ExecutionConfig`允许为运行时设置工作的具体配置值。要更改影响所有作业的默认值，请参阅[配置](https://flink.sojb.cn/ops/config.html)。

*   [**Java**](#tab_java_0)
*   [**Scala**](#tab_scala_0)



```
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
ExecutionConfig executionConfig = env.getConfig();
```





```
val env = StreamExecutionEnvironment.getExecutionEnvironment
var executionConfig = env.getConfig
```



可以使用以下配置选项:(默认为粗体）

*   **`enableClosureCleaner()`**/ `disableClosureCleaner()`。默认情况下启用闭包清理器。闭包清理器删除Flink程序中对周围类匿名函数的不需要的引用。禁用闭包清除程序后，可能会发生匿名用户函数引用周围的类（通常不是Serializable）。这将导致序列化程序出现异常。

*   `getParallelism()`/ `setParallelism(int parallelism)`设置作业的默认并行度。

*   `getMaxParallelism()`/ `setMaxParallelism(int parallelism)`设置作业的默认最大并行度。此设置确定最大并行度并指定动态缩放的上限。

*   `getNumberOfExecutionRetries()`/ `setNumberOfExecutionRetries(int numberOfExecutionRetries)`设置重新执行失败任务的次数。值为零可有效禁用容错。值为`-1`表示应使用系统默认值（在配置中定义）。这已弃用，请改用[重启策略](https://flink.sojb.cn/dev/restart_strategies.html)。

*   `getExecutionRetryDelay()`/ `setExecutionRetryDelay(long executionRetryDelay)`设置在重新执行作业之前系统在作业失败后等待的延迟（以毫秒为单位）。在TaskManagers上成功停止所有任务后，延迟开始，一旦延迟过去，任务就会重新启动。此参数对于延迟重新执行非常有用，以便在尝试重新执行之前让某些超时相关故障完全浮出水面（例如尚未完全超时的断开连接），并且由于同样的问题而再次立即失败。仅当执行重试次数为一次或多次时，此参数才有效。这已弃用，请改用[重启策略](https://flink.sojb.cn/dev/restart_strategies.html)。

*   `getExecutionMode()`/ `setExecutionMode()`。默认执行模式为PIPELINED。设置执行模式以执行程序。执行模式定义数据交换是以批处理还是以流水线方式执行。

*   `enableForceKryo()`/ **`disableForceKryo`**。Kryo默认不会被迫。强制GenericTypeInformation将Pryo序列化程序用于POJO，即使我们可以将它们分析为POJO。在某些情况下，这可能更可取。例如，当Flink的内部序列化程序无法正确处理POJO时。

*   `enableForceAvro()`/ **`disableForceAvro()`**。默认情况下不会强制使用Avro。强制Flink AvroTypeInformation使用Avro序列化程序而不是Kryo来序列化Avro POJO。

*   `enableObjectReuse()`/ **`disableObjectReuse()`**默认情况下，对象不会在Flink中重复使用。启用对象重用模式将指示运行时重用用户对象以获得更好的性能。请记住，当 算子操作的用户代码函数不知道此行为时，这可能会导致错误。

*   **`enableSysoutLogging()`**/ `disableSysoutLogging()`JobManager状态更新`System.out`默认打印到。此设置允许禁用此行为。

*   `getGlobalJobParameters()`/ `setGlobalJobParameters()`此方法允许用户将自定义对象设置为作业的全局配置。由于`ExecutionConfig`可以在所有用户定义的函数中访问，因此这是一种在作业中全局可用的配置的简单方法。

*   `addDefaultKryoSerializer(Class&lt;?&gt; type, Serializer&lt;?&gt; serializer)`为给定的注册Kryo序列化程序实例`type`。

*   `addDefaultKryoSerializer(Class&lt;?&gt; type, Class&lt;? extends Serializer&lt;?&gt;&gt; serializerClass)`为给定的注册Kryo序列化程序类`type`。

*   `registerTypeWithKryoSerializer(Class&lt;?&gt; type, Serializer&lt;?&gt; serializer)`使用Kryo注册给定类型并为其指定序列化程序。通过使用Kryo注册类型，类型的序列化将更加高效。

*   `registerKryoType(Class&lt;?&gt; type)`如果类型最终被Kryo序列化，那么它将在Kryo注册以确保只写入标签（整数ID）。如果某个类型未在Kryo中注册，则其整个类名将与每个实例序列化，从而导致更高的I / O成本。

*   `registerPojoType(Class&lt;?&gt; type)`使用序列化堆栈注册给定类型。如果类型最终被序列化为POJO，则该类型将在POJO序列化程序中注册。如果类型最终被Kryo序列化，那么它将在Kryo注册以确保只写入标签。如果某个类型未在Kryo中注册，则其整个类名将与每个实例序列化，从而导致更高的I / O成本。

请注意，注册的类型`registerKryoType()`不适用于Flink的Kryo序列化程序实例。

*   `disableAutoTypeRegistration()`默认情况下启用自动类型注册。自动类型注册是使用Kryo和POJO序列化器注册用户代码使用的所有类型（包括子类型）。

*   `setTaskCancellationInterval(long interval)`设置在连续尝试取消正在运行的任务之间等待的间隔（以毫秒为单位）。取消`interrupt()`任务时，如果任务线程未在特定时间内终止，则创建新线程，该线程定期调用任务线程。此参数是指连续呼叫之间的时间`interrupt()`，默认设置为**30000**毫秒或**30秒**。

的`RuntimeContext`是在可访问的`Rich*`通过的函数的`getRuntimeContext()`方法还允许访问`ExecutionConfig`中的所有用户定义的函数。

