流计算 Oceanus Pipeline

YAML 作业中 pipeline 块支持的配置项。这些参数作用于整个作业,与具体的 Source、Sink 类型无关。Source 与 Sink 各自的参数请参考对应的连接器文档。

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

pipeline 块是作业定义中必需的部分,不能为空,但其中的每个参数都是可选的。

一、快速示例

source: type: mysql name: MySQL Source hostname: 127.0.0.1 port: 3306 username: admin password: pass tables: adb.\\.* server-id: 5401-5404sink: type: doris name: Doris Sink fenodes: 127.0.0.1:8030 username: root password: passpipeline: name: Sync MySQL to Doris parallelism: 4 local-time-zone: Asia/Shanghai schema.change.behavior: LENIENT operator.uid.prefix: cdc-sync

二、配置项

参数 是否必填 默认值 类型 说明
name optional Flink CDC Pipeline Job String 作业名称,会作为 Flink 集群中的作业名显示。
parallelism optional 1 Integer 作业的全局并发度。
local-time-zone optional systemDefault String 作业级别的本地时区,用于时间类型字段的转换。默认值 systemDefault 表示使用作业运行环境的系统时区, 跨时区部署时结果可能不一致,建议显式配置。取值可以是完整时区名(如 Asia/Shanghai、America/Los_Angeles), 也可以是自定义时区 ID(如 GMT+08:00)。
execution.runtime-mode optional STREAMING String 作业的运行模式,可取 STREAMING 或 BATCH。设为 BATCH 时按批语义执行,可用于一次性全量同步。注意:部分 Source 在 BATCH 模式下对启动模式有限制, 例如 MySQL 只允许 snapshot。
schema.change.behavior optional LENIENT String 表结构变更的同步策略,可取 IGNORE、LENIENT、 TRY_EVOLVE、EVOLVE、EXCEPTION,取值大小写不敏感。 详见「表结构变更策略」章节。
schema.change.skip-duplicate-column.enabled optional false Boolean 当目标表结构中已存在同名列时,是否跳过该新增列事件。默认为 false,即保留历史行为,遇到重复列时 schema 校验失败。
schema.change.skip-create-table.enabled optional false Boolean 是否跳过向下游执行建表,同时保留该事件用于内部表结构跟踪。仅当目标表已提前创建且与作业的表结构兼容时才可开启。
route-mode optional ALL_MATCH String 路由规则的匹配模式。ALL_MATCH:应用所有匹配的路由规则。FIRST_MATCH:只应用第一条匹配的规则并停止后续匹配。
operator.uid.prefix optional (none) String 作业中所有算子 UID 的统一前缀。未设置时由 Flink 自动生成 UID。建议显式设置,以便算子 UID 稳定可识别, 便于有状态升级、问题排查和 Flink UI 诊断。
schema.operator.uid optional $$_schema_operator_$$ String 表结构算子的唯一 ID,用于算子间通信,必须在所有算子中保持唯一。已废弃,请使用 operator.uid.prefix 代替。注意:该参数与 operator.uid.prefix 不能同时指定。
schema-operator.rpc-timeout optional 3min Duration 表结构算子等待下游表结构变更应用完成的超时时间。下游(如 Doris、StarRocks)执行 DDL 较慢时,可适当调大该值。

三、LENIENT 模式的事件重写

LENIENT 是默认策略,它会在应用前重写部分事件,以避免下游丢数据:

·新增列:新增的列统一转为可空(nullable)后添加,避免下游存在历史数据时新增非空列失败。

·删除列:不真正删除该列,只是把该列转为可空;如果该列原本就是可空,则不做任何操作。

·重命名列:不真正重命名,而是添加一个可空的新列(新列名),必要时再把旧列转为可空。

·其它变更(如修改列类型):原样应用。

此外,LENIENT 模式下默认不会把 drop.table(删除表)和 truncate.table(清空表)事件发送到下游,以避免误删数据。其它策略下默认不排除任何事件。该默认行为仅在完全没有配置 exclude.schema.changes 时生效。

四、按事件类型精细控制

如果需要按事件类型分别控制,可以在 sink 块配置 include.schema.changes 与exclude.schema.changes,后者优先级更高。可配置的事件类型如下:

事件类型 说明
create.table 创建表。
add.column 新增列。
alter.column.type 修改列类型。
drop.column 删除列。
rename.column 重命名列。
drop.table 删除表。
truncate.table 清空表数据。

支持部分匹配,例如传入 drop 等价于同时传入 drop.column 与 drop.table。

建表事件是所有后续表结构变更的基础。显式指定 include.schema.changes 时,create.table 会被自动加入,除非通过

exclude.schema.changes 明确排除它。

示例:

sink: include.schema.changes: [create.table, column] # 包含建表与所有列相关事件 exclude.schema.changes: [drop.column] # 但排除删除列

五、子配置块

pipeline 块下除了上述参数,还支持两个子配置块。

六、user-defined-function

声明自定义函数(UDF),供 transform 块中的 projection 与 filter 引用。

pipeline: user-defined-function: – name: addone classpath: com.example.functions.AddOneFunctionClass – name: format classpath: com.example.functions.FormatFunctionClass options: format: '%S'

字段 是否必填 说明
name required 函数名,在 transform 表达式中按此名称引用。
classpath required 函数实现类的全限定名。
options optional 传给函数的配置项,以键值对形式声明。

七、model

声明内置模型,供 transform 块引用。模型是内置提供的函数,只需指定模型类名,无需写完整 classpath。

pipeline: model: – model-name: my-model class-name: BuiltInModelClass option-key: option-value

字段 是否必填 说明
model-name required 模型名,在 transform 表达式中按此名称引用。
class-name required 模型类名,取内置模型名即可。
其它字段 optional 模型自身的配置项,按所选模型的要求填写。
赞 (0)
上一篇 4天前
下一篇 4天前