流计算 Oceanus Flink 配置项

SET 语句可以调整作业的关键运行参数。目前大多数参数都可以通过 作业高级参数 功能来配置,只有极少数参数需要使用 SET 语句。

相关产品
流计算 Oceanus 产品页,含版本规格、价格与购买入口。

一、语法

SET 语句中字符串类型的参数值必须用半角单引号括起来,布尔值和数值型的可以不加单引号。

SET 配置项 = '参数值';

二、配置 SQL 作业状态保留时间

针对 GROUP BY 和 JOIN 等大状态的语句,Flink 提供了 Idle State Retention Time 机制,用户可以通过设置状态的最短保留时间和最长保留时间,避免状态的无限制增长造成作业崩溃(OOM)。例如,下面的语句指定了状态的最短保留时间是3小时。

set table.exec.state.ttl = '3h';

三、启用 Table 的 Mini-Batch 支持

Flink SQL 对聚合提供了 Mini-Batch 支持,可以显著提升吞吐量。默认没有开启,因为会增加处理时延。如果希望使用 Mini-Batch,需要在 SQL 作业的编辑页面中添加以下语句,通过下面的设置项启用此功能(批次大小和延迟参数可以自行设置,但不可省略):

set table.exec.mini-batch.enabled = true;set table.exec.mini-batch.size = 5000;set table.exec.mini-batch.allow-latency = '200 ms';

四、避免使用 SinkUpsertMaterializer

SinkUpsertMaterializer 在状态中维护了全量数量,可能会导致状态过大。

引入原因: Flink 非确定性更新(NDU)问题探索和规避。

可以通过 table.exec.sink.upsert-materialize 进行配置:

·auto(默认值):Flink 自行推断出乱序是否存在,如果可能存在乱序,则会添加 SinkUpsertMaterializer。

·none:不使用。

·force:强制使用。

需要注意,Flink 自行推断添加的 SinkUpsertMaterializer 不一定是有意义的,如果作业并行度为1或者用户明确知道 join 的 Key 不会发生变更,可以通过下面的配置关闭 SinkUpsertMaterializer。

table.exec.sink.upsert-materialize = 'none';

赞 (0)
上一篇 4天前
下一篇 4天前