[重磅]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,大数据,flink-cdc)