[重磅]Flink CDC之Yaml最佳实践之踩坑日记

    继上篇文章提到了如何在应用层来通过编写yaml文件远程提交到flink集群来跑文章之后,作者开始重点研究了下目前已经支持的Flink CDC的yaml pipeline 形式的内容 source&sink。

01.

YAML优势

👍 1.1、YAML vs SQL

数据摄入YAML作业和SQL作业在数据传递过程中使用不同的数据类型:

  • SQL传递RowData,YAML传递DataChangeEvent和SchemaChangeEvent。SQL的每个RowData都有自己的变更类型,主要有4种类型:insert(+I),update before(-U),update after(+U)和delete(-D)。

  • YAML使用SchemaChangeEvent传递Schema变更信息,例如创建表,添加列、清空表等,DataChangeEvent用来传递数据变更,主要是insert,update和delete,update消息中同时包含了update before和update after的内容,这使得您能够写入原始变更数据到目标端。

数据摄入YAML作业相比SQL作业的优势如下:

数据摄入YAML

SQL

自动识别Schema,支持整库同步

需要人工写Create Table和Insert语句

支持多策略的Schema变更

不支持Schema变更

支持原始Changelog同步

破坏原始Changelog结构

支持读写多个表

读写单个表

相对于CTAS或CDAS语句,YAML作业功能也更为强大,可以支持:

  • 上游表结构变更立即同步,不用等新数据写入触发。

  • 支持原始Changelog同步,Update消息不拆分。

  • 同步更多类型的Schema变更,例如Truncate Table和Drop Table等变更。

  • 支持指定表的映射关系,灵活定义目标端表名。

  • 支持灵活的Schema Evolution行为,用户可配置。

  • 支持WHERE条件过滤数据。

  • 支持裁剪字段。

👍 1.2、YAML vs DataStream

数据摄入YAML作业相比DataStream作业的优势如下:

数据摄入YAML

DataStream

为各级别用户设计,不只是专家

需要熟悉Java和分布式系统

隐藏底层细节,便于开发

需要熟悉Flink框架

YAML格式容易理解和学习

需要了解Maven等工具管理相关依赖

### Flink CDCYAML 配置的作用 Flink CDC 利用 YAML 文件来定义数据同步作业的具体参数和行为。这种方式不仅简化了配置过程,还提高了可读性和灵活性[^2]。 #### YAML 配置的主要组部分 1. **source**: 定义源数据库的相关信息,包括连接细节、表名等。 - `username`: 数据库用户名 - `port`: 端口号 - `database-name`: 数据库名称 - `table-list`: 表列表 2. **sink**: 描述目标系统的设置,比如 StarRocks 的具体位置和其他必要的属性。 3. **cdc-mode**: 指定变更数据捕获模式,如全量复制、增量更新或是两者结合的形式。 4. **transformations (optional)**: 可选部分用于描述任何需要应用的数据转换逻辑,例如字段映射或过滤规则。 5. **checkpointing and fault-tolerance settings**: 设置检查点机制及相关容错选项以保障高可用性。 ```yaml # 示例:从 MySQL 同步至 StarRocks 的基本 YAML 配置 source: username: "root" password: "example_password" hostname: "localhost" port: 3306 database-name: "test_db" table-list: ["orders", "customers"] sink: type: "starrocks" properties: jdbc-url: "jdbc:mysql://<host>:9030/<db>" load-url: "<fe_host>:8480" cdc-mode: "initial-sync-and-cdc" # 支持 initial, cdc 和 both 类型 transformations: - rename-field: field-id: order_id new-name: orderId ``` 这种基于 YAML 的配置方法允许开发者清晰地表达复杂的 ETL 流程,并且易于管理和修改。对于希望快速搭建并运行数据管道的技术人员来说非常友好[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值