Flink CDC系列之:Kafka JSON 序列化类型枚举
枚举概述
bash
public enum JsonSerializationType
这个枚举定义了 Kafka Sink 支持的 JSON 序列化格式类型,主要用于配置选择不同的序列化器实现。
枚举值详解
DEBEZIUM_JSON - Debezium JSON 格式
bash
/** Use {@link DebeziumJsonSerializationSchema} to serialize. */
DEBEZIUM_JSON("debezium-json")
对应的序列化器:DebeziumJsonSerializationSchema
Debezium 格式特点:
- 标准格式:遵循 Debezium 的 CDC 数据格式标准
- 完整元数据:包含丰富的源数据库元信息
- Schema 信息:可选包含表结构信息
- 广泛兼容:被很多数据集成工具原生支持
示例输出:
java
{
"before": null,
"after": {
"id": 1001,
"name": "张三",
"email": "zhangsan@example.com"
},
"source": {
"version": "1.9.7.Final",
"connector": "mysql",
"name": "mysql-server-1",
"ts_ms": 1700812800000,
"snapshot": "false",
"db": "inventory",
"table": "users",
"server_id": 223344,
"gtid": null,
"file": "mysql-bin.000003",
"pos": 10567,
"row": 0,
"thread": 7,
"query": null
},
"op": "c",
"ts_ms": 1700812800123,
"transaction": null
}
CANAL_JSON - Canal JSON 格式
java
/** Use {@link CanalJsonSerializationSchema} to serialize. */
CANAL_JSON("canal-json")
对应的序列化器:CanalJsonSerializationSchema
Canal 格式特点:
- 阿里巴巴标准:遵循阿里巴巴 Canal 的 CDC 数据格式
- 简洁格式:数据结构相对简洁
- 国内生态:与阿里系数据工具更好集成
- 性能优化:针对大数据场景优化
在 Flink CDC 中的配置使用
Flink CDC Pipeline 配置
java
mysql-sync-database \
--database source_db \
--sink-conf connector=kafka \
--sink-conf properties.bootstrap.servers=kafka-broker:9092 \
--sink-conf value.format=json \
--sink-conf json.type=debezium-json # 或 canal-json
总结:这个 JsonSerializationType 枚举提供了灵活的 JSON 序列化格式选择,让用户能够根据具体的技术栈、性能要求和集成需求选择合适的 CDC 数据格式。通过统一的配置接口,简化了不同序列化器之间的切换和使用。