在flink sql开发中,我们有时候需要动态的调整配置参数,例如前面我们演示的:
这里的set我们把它理解成设置的环境变量相关的配置。下面我们以flink1.17版本为例,列举下对应的set的环境变量的所有值:
1)table.exec.async-lookup.buffer-capacity
类型:Integer 默认值:100 适用场景:Batch/Streaming 说明:异步查找连接可以触发的最大异步操作的操作数。 The max number of async i/o operation that the async lookup join can trigger.
2)table.exec.async-lookup.output-mode
类型:Enum 默认值:ORDERED 适用场景:Batch/Streaming 可取值范围:ORDERED/ALLOW_UNORDERED 说明:异步操作的输出模式,默认情况下将转换为{@seeAsyncDataStream.OutputMode}、ORDERED。如果设置为ALLOW_UNORDERED,则在不影响结果正确性的情况下,将尝试使用{@see AsyncDataStream.OutputMode.UNORDERED},否则仍将使用ORDERED,可用的值是:"ORDERED"和"ALLOW_UNORDERED"
3)table.exec.async-lookup.timeout
类型:Durtation 默认值:3 min 适用场景:Batch/Streaming 说明:异步操作完成的超时时间。 The async timeout for the asynchronous operation to complete.
4)table.exec.deduplicate.insert-update-after-sensitive-enabled
类型:Boolean 默认值:true 适用场景:Streaming 可取值范围:true/false 说明:设置作业(尤其是接收器)是否对INSERT消息和UPDATE_AFTER消息敏感。如果为false,Flink有时(例如,对最后一行执行重复数据消除)可能会对第一行发送UPDATE_AFTER,而不是INSERT。如果为true,Flink将保证为第一行发送INSERT,在这种情况下会有额外的开销。默认值为true。
5)table.exec.deduplicate.mini-batch.compact-changes-enabled
类型:Boolean 默认值:false 适用场景:Streaming 可取值范围:true/false 说明:设置是否压缩在行时间小批量中发送到下游的更改。如果为true,Flink将压缩更改并只向下游发送最新的更改。请注意,如果下游需要版本化数据的详细信息,则无法应用此优化。如果为false,Flink会将所有更改发送到下游,就像未启用小批量时一样
6)table.exec.disabled-operators
类型:String 默认值:none 适用场景:Batch 可取值范围:NestedLoopJoin/ShuffleHashJoin/BroadcastHashJoin/SortMergeJoin/HashAgg/SortAgg 说明:禁用指定operators,用逗号分隔
7)table.exec.legacy-cast-behaviour
类型:Enum 默认值:Disabled 适用场景:Batch/Streaming 可取值范围:ENABLED/DISABLED 说明:确定CAST是按照传统行为运行,还是按照引入各种修复和改进的新行为运行。
8)table.exec.mini-batch.allow-latency
类型:Duration 默认值:0ms 适用场景:Streaming 说明:
9)table.exec.mini-batch.enabled
类型:Boolean 默认值:false 适用场景:Streaming 可取值范围:true/false 说明:指定是否启用MiniBatch优化。 MiniBatch是用于缓冲输入记录以减少状态访问的优化。默认情况下禁用此功能。 要启用此功能,用户应将此配置设置为true。注意:如果启用了mini batch 处理,则必须设置“ table.exec.mini-batch.allow-latency”和“ table.exec.mini-batch.size”.
10)table.exec.mini-batch.size
类型:Long 默认值:-1 适用场景:Streaming 说明:可以为MiniBatch缓冲最大输入记录数。 MiniBatch是用于缓冲输入记录以减少状态访问的优化。MiniBatch以允许的等待时间间隔以及达到最大缓冲记录数触发。 注意:MiniBatch当前仅适用于非窗口聚合。如果将table.exec.mini-batch.enabled设置为true,则其值必须为正.
11)table.exec.rank.topn-cache-size
类型:Long 默认值:10000 适用场景:Streaming 说明:秩运算符具有缓存部分状态内容的缓存,以减少状态访问。Cache size是每个排名任务中的记录数。
12)table.exec.resource.default-parallelism
类型:Integer 默认值:-1 适用场景:Batch/Streaming 说明:设置所有Operator的默认并行度。
13)table.exec.simplify-operator-name-enabled
类型:Boolean 默认值:false 适用场景:Batch/Streaming 可取值范围:true/false 说明:如果为true,优化器将使用ExecNode的id和类型简化运算符名称,并在描述中保留详细信息。默认值为true。
14)table.exec.sink.keyed-shuffle
类型:Enum 默认值:Auto 适用场景:Streaming 可取值范围:NONE/AUTO/FORCE 说明:为了最大限度地减少将数据写入带有主键的表时的分布式无序问题,许多用户都会遇到这种问题。默认情况下,当接收器的并行度与上游运算符不同并且上游仅为追加时,FLINK将自动添加键控混洗。只有当上游确保了多记录在主键上的顺序时,这才有效,否则,添加的shuffle无法解决问题(在这种情况下,更合适的方法是首先考虑对源的重复数据消除操作,或者使用具有主键定义的upstart源,该源真正反映了记录的演变)
15)table.exec.sink.not-null-enforcer
类型:Enum 默认值:ERROR 适用场景:Batch/Streaming 可取值范围:ERROR/DROP 说明:对表的NOT NULL列约束强制执行不能将空值插入到表中。Flink支持“error”(默认)和“drop”强制行为
16)table.exec.sink.type-length-enforcer
类型:Enum 默认值:IGNORE 适用场景:Batch/Streaming 可取值范围:IGNORE/TRIM_PAD 说明:确定是否修剪或填充具有CHAR(<length>)/VARCHAR(<length>)/BINARY(<lenngth>。
17)table.exec.sink.upsert-materialize
类型:Enum 默认值:AUTO 适用场景:Streaming 可取值范围:NONE/AUTO/FORCE 说明:由于分布式系统中 Shuffle 导致 ChangeLog 数据混乱,Sink 接收到的数据可能不是全局 upsert 的顺序。因此,在 upsert sink 之前添加 upsert materialize 运算符。它接收上游的变更日志记录并为下游生成一个 upsert 视图。默认情况下,当唯一键出现分布式无序时,会添加具体化操作符。您也可以选择不实现(NONE)或强制实现(FORCE)。 Possible values: "NONE" "FORCE" "AUTO"
18)table.exec.sort.async-merge-enabled
类型:Boolean 默认值:true 适用场景:Batch 可取值范围:true/false 说明:是否异步合并排序的溢出文件
19)table.exec.sort.default-limit
类型:Integer 默认值:-1 适用场景:Batch 说明:用户在排序未设置限制时的默认限制。-1表示忽略此配置。
20)table.exec.sort.max-num-file-handles
类型:Integer 默认值:128 适用场景:Batch 说明:外部合并排序的最大扇入。它限制每个运算符的文件句柄数。如果太小,可能会导致中间合并。但如果太大,则会导致同时打开太多文件,消耗内存,导致随机读取
21)table.exec.source.cdc-events-duplicate
类型:Boolean 默认值:true 适用场景:Streaming 可取值范围:true/false 说明:指示作业中的CDC(更改数据捕获)源是否会产生重复的更改事件,这些事件需要框架进行重复数据消除并获得一致的结果。CDC源是指产生完整更改事件的源,包括INSERT/UPDATE_BEFORE/UPDATE_AFTER/DELETE,例如具有Debezium格式的Kafka源。默认情况下,此配置的值为false。然而,存在重复的更改事件是常见的情况。因为当发生故障转移时,CDC工具(例如Debezium)通常至少在一次交付中工作。因此,在异常情况下,Debezium可能会向Kafka传递重复的更改事件,而Flink将获得重复的事件。这可能会导致Flink查询获得错误的结果或意外的异常。因此,如果CDC工具至少交付一次,建议打开此配置。启用此配置需要在CDC源上定义主键。主键将用于重复数据消除更改事件,并生成规范化的更改日志流,但需要额外的有状态运算符。
22)table.exec.source.idle-timeout
类型:Duration 默认值:0 ms 适用场景:Streaming 说明:当源在超时时间内没有接收到任何元素时,它将被标记为暂时空闲。这允许下游任务提前其水印,而无需在该源空闲时等待来自该源的水印。默认值为0,表示未启用检测源空闲。
23)table.exec.spill-compression.block-size
类型:MemorySize 默认值:64kb 适用场景:Batch 说明:溢出数据时用于进行压缩的内存大小。内存越大,压缩比越高,但作业将消耗更多的内存资源
24)table.exec.spill-compression.enabled
类型:Boolean 默认值:true 适用场景:Batch 可取值范围:true/false 说明:是否压缩溢出的数据。目前,我们仅支持对排序和哈希标记以及哈希连接操作符压缩溢出数据。
25)table.exec.state.ttl
类型:Duration 默认值:0 ms 适用场景:Streaming 说明:指定空闲状态(即未更新的状态)将保留多长时间的最小时间间隔。在空闲时间小于最小时间之前,状态永远不会被清除,并将在空闲后的某个时间被清除。默认设置为从不清理状态。注意:清理状态需要额外的簿记开销。默认值为0,这意味着它永远不会清理状态。
26)table.exec.uid.format
类型:String 默认值:"<id>_<transformation>" 适用场景:Streaming 说明:定义用于生成ExecNode流转换的UID的格式模式。模式可以全局定义,也可以在编译的计划中按ExecNode定义。支持的参数有:<id>(来自静态计数器)、<type>(例如,“流执行接收器”)、<version>和<transformation>(例如接收器的“约束验证器”)。在Flink 1.15.x中,模式被错误地定义为“<id>_<type>_<version>_<transformation>”,这将阻止未来的迁移。
27)table.exec.uid.generation
类型:Enum 默认值:PLAN_ONLY 适用场景:Streaming 可取值范围:PLAN_ONLY/ALWAYS/DISABLED 说明:为了在恢复期间将状态重新映射到操作符,需要为管道的流转换分配UID。规划器可以生成和分配显式UID。如果规划器未设置UID,则UID将由较低层自动生成,这些层可以考虑完整的拓扑以实现ID的唯一性。有关详细信息,请参阅DataStream API。此配置选项仅适用于专家,默认值应足以满足大多数用例。默认情况下,只有从持久化编译计划创建的管道才会显式分配UID。因此,这些管道可以在同一拓扑中任意移动,而不会影响稳定的UID。
28)table.exec.window-agg.buffer-size-limit
类型:Integer 默认值:100000 适用场景:Batch 可取值范围:PLAN_ONLY/ALWAYS/DISABLED 说明:设置组窗口agg操作符中使用的窗口元素缓冲区大小限制。
29)table.optimizer.agg-phase-strategy
类型:String 默认值:AUTO 适用场景:Batch/Streaming 可取值范围:AUTO/TWO_PHASE/ONE_PHASE 说明:聚合阶段的策略。只能设置AUTO、TWO_PHASEA或ONE_PHASE。自动:聚合阶段没有特殊的强制执行器。选择两级骨料还是一级骨料取决于成本。TWO_PHASE:强制使用具有localAggregate和globalAggregate的两阶段聚合。请注意,如果聚合调用不支持优化到两个阶段,我们仍然将使用一个阶段的聚合。ONE_PHASE:强制使用仅具有CompleteGlobalAggregate的一个阶段聚合
30)table.optimizer.bushy-join-reorder-threshold
类型:Integer 默认值:12 适用场景:Batch/Streaming 说明:密集连接重新排序算法中允许的最大连接节点数,否则将使用左深度连接重新排序方法。密集连接重排序算法的搜索空间将随着该阈值的增加而增加,因此建议不要将该阈值设置得太大。默认值为12
31)table.optimizer.distinct-agg.split.bucket-num
类型:Integer 默认值:1024 适用场景:Streaming 说明:配置拆分不同聚合时的桶数。该数字用于一级聚合,以计算桶键“hash_code(distinct_key)%bucket_NUM”,该桶键在拆分后用作额外的组键
32)table.optimizer.distinct-agg.split.enabled
类型:Boolean 默认值:false 适用场景:Streaming 可取值范围:true/false 说明:告诉优化器是否将不同的聚合(例如COUNT(distinct列)、SUM(DISTINC列))拆分为两个级别。第一个聚合被一个额外的键打乱,该键使用distinct_key的哈希码和桶数计算。当不同聚合中存在数据倾斜时,这种优化非常有用,并提供了扩展作业的能力。默认值为false
33)table.optimizer.dynamic-filtering.enabled
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:如果为true,优化器将尝试将动态过滤推送到扫描表源中,将过滤不相关的分区或输入数据,以减少运行时的扫描I/O
34)table.optimizer.join-reorder-enabled
类型:Boolean 默认值:false 适用场景:Batch/Streaming 可取值范围:true/false 说明:在优化器中启用联接重新排序。默认为禁用
35)table.optimizer.join.broadcast-threshold
类型:Long 默认值:1048576 适用场景:Batch 说明:配置在执行联接时将广播到所有工作节点的表的最大大小(以字节为单位)。通过将该值设置为-1来禁用广播
36)table.optimizer.multiple-input-enabled
类型:Boolean 默认值:true 适用场景:Batch 可取值范围:true/false 说明:如果为真,优化器将把具有流水线洗牌的操作符合并为多输入操作符,以减少洗牌并提高性能。默认值为true
37)table.optimizer.non-deterministic-update.strategy
类型:Enum 默认值:IGNORE 适用场景:Streaming 可取值范围:TRY_RESOLVE/IGNORE 说明:当它是“TRY_RESOLVE”时,优化器会尝试解决由变更日志管道中的“非确定性更新”(NDU)引起的正确性问题。变更日志可能包含各种消息类型:插入(I)、删除(D)、更新之前(UB)、更新之后(UA)。在仅插入的变更日志管道中没有NDU问题。对于更新,有三个主要的NDU问题: 1.非确定性函数,包括标量、表、聚合函数,包括内置函数和自定义函数。 2.演进源上的LookupJoin 3.Cdc源携带的元数据字段是系统列,不属于实体数据本身。 对于第一步,如果需要,优化器会自动为No.2(LookupJoin)启用物化,并为No.1(非确定性函数)和No.3(具有元数据的Cdc源)提供详细的错误消息,这相对更容易通过更改SQL来解决。 默认值为“IGNORE”,优化器不会更改。
38)table.optimizer.reuse-source-enabled
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:当它为真时,优化器将尝试找出重复的表源并重用它们。仅当table.optimizer.resue-sub-plan-enabled为true时,这才有效
39)table.optimizer.reuse-sub-plan-enabled
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:当它为真时,优化器将尝试找出重复的子计划并重用它们
40)table.optimizer.source.aggregate-pushdown-enabled
类型:Boolean 默认值:true 适用场景:Batch 可取值范围:true/false 说明:为true时,优化器将本地聚合下推到TableSource中,该TableSource实现SupportsAggregatePushDown
41)table.optimizer.source.predicate-pushdown-enabled
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:当它为true时,优化器将把谓词下推到FilterableTableSource中。默认值为true。
42)table.optimizer.source.report-statistics-enabled
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:如果源从SupportsStatisticReport扩展,并且来自目录的统计信息为UNKNOWN,则为true时,优化器将收集并使用来自源连接器的统计信息。默认值为true。
43)table.builtin-catalog-name
类型:String 默认值:default_catalog 适用场景:Batch/Streaming 说明:实例化TableEnvironment时要创建的初始目录的名称。
44)table.builtin-database-name
类型:String 默认值:default_catalog 适用场景:Batch/Streaming 说明:实例化TableEnvironment时要创建的初始目录中的默认数据库的名称
45)table.dml-sync
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:指定DML作业(即插入操作)是异步执行还是同步执行。默认情况下,执行是异步的,因此您可以同时提交多个DML作业。如果将此选项设置为true,则插入操作将等待作业完成。
46)table.dynamic-table-options.enabled
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:启用或禁用用于动态指定表选项的OPTIONS提示,如果禁用,则在指定任何OPTIONS提示时将引发异常
47)table.generated-code.max-length
类型:Integer 默认值:4000 适用场景:Batch/Streaming 说明:指定将生成的代码拆分为子函数调用的阈值。Java的最大方法长度为64 KB。如果需要,此设置允许更细的粒度。默认值是4000,而不是64KB,因为在默认情况下,JIT拒绝处理超过8K字节代码的方法。
48)table.local-time-zone
类型:String 默认值:default 适用场景:Batch/Streaming 说明:本地时区定义当前会话时区id。在与本地时区进行转换时使用它。在内部,具有本地时区的时间戳始终以UTC时区表示。然而,当转换为不包括时区的数据类型(例如,TIMESTAMP、time或简单地STRING)时,在转换期间使用会话时区。选项的输入要么是全名,如“America/Los_Angeles”,要么是自定义时区id,如“GMT-08:00”。
49)table.plan.compile.catalog-objects
类型:Enum 默认值:ALL 适用场景:Batch/Streaming 可取值范围:ALL/SCHEMA/IDENTIFIER 说明:策略如何在编译期间将目录对象(如表、函数或数据类型)持久化到计划中。它影响恢复操作期间目录元数据的需要,并影响计划大小。此配置选项不影响匿名/内联或临时对象。如果可能,将完全持久化匿名/内联对象(包括模式和选项),否则编译将失败。临时对象将仅由其标识符持久化,并且在还原期间,该对象需要存在于会话上下文中。
50)table.plan.force-recompile
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:如果输出计划文件已经存在,则false COMPILE PLAN语句将失败,除非使用子句if NOT EXISTS。当为true时,编译计划将覆盖现有的输出计划文件。我们强烈建议仅出于调试目的启用此标志
51)table.plan.restore.catalog-objects
类型:Enum 默认值:ALL 适用场景:Batch/Streaming 可取值范围:ALL/ALL_ENFORCED/IDENTIFIER 说明:策略如何使用给定的计划恢复目录对象(如表、函数或数据类型),并在必要时执行目录查找。它影响了目录元数据的呈现需求,并支持部分丰富计划信息。
52)table.resources.download-dir
类型:String 默认值:System.getProperty("java.io.tmpdir") 适用场景:Batch/Streaming 说明:planner用于存储下载资源的本地目录
53)table.sql-dialect
类型:String 默认值:default 适用场景:Batch/Streaming 说明:SQL方言定义了如何解析SQL查询。不同的SQL方言可能支持不同的SQL语法。当前支持的方言有:default和hive
54)sql-client.display.max-column-width
类型:Integer 默认值:30 适用场景:Streaming 说明:打印查询结果时,此参数决定截短前屏幕上显示的字符数。这仅适用于流模式下具有可变长度类型(如字符串)的列。固定长度类型和批处理模式下的所有类型都使用确定性列宽打印
55)sql-client.execution.max-table-result.rows
类型:Integer 默认值:1000000 适用场景:Batch/Streaming 说明:处于表模式时要缓存的行数。如果行数超过指定值,它将重试FIFO样式中的行。
56)sql-client.execution.result-mode
类型:Enum 默认值:TABLE 适用场景:Batch/Streaming 可取值范围:TABLE/CHANGELOG/TABLEAU 说明:确定查询结果的显示方式
57)sql-client.verbose
类型:Boolean 默认值:true 适用场景:Batch/Streaming 可取值范围:true/false 说明:确定是否将详细输出输出到控制台。如果将选项设置为true,它将打印异常堆栈。否则,它只输出原因
以上就是关于flink sql开发中set环境变量对应的变量值信息。
还没有评论,来说两句吧...