Flink CDC2.0 StringDebeziumDeserializationSchema序列化器和打印数据格式

提出问题

为什么当数据变化时,打印格式是下面这种:

SourceRecord{
sourcePartition={server=mysql_binlog_source}, # mysql binlog
sourceOffset={
    ts_sec=1655552829, # binlog 时间戳
    file=mysql-bin.000004, # binlog 文件名
    pos=154,
    snapshot=true
    }
}

ConnectRecord{
  topic='mysql_binlog_source.scott.dept', # 表名
  kafkaPartition=null, 
  key=Struct{deptno=7369}, # 主键
  keySchema=Schema{mysql_binlog_source.scott.dept.Key:STRUCT},
  value=Struct{
  after=Struct{deptno=74,dname=财务部,loc=杭州2}, # 数据
  source=Struct{version=1.5.2.Final,connector=mysql,name=mysql_binlog_source,ts_ms=1655552829388,snapshot=true,db=scott,table=dept,server_id=0,file=mysql-bin.000004,pos=154,row=0},
  op=r, # crud中的 Retrieve,表示查询出的数据
  ts_ms=1655552829392
  }, valueSchema=Schema{mysql_binlog_source.scott.dept.Envelope:STRUCT}, timestamp=null, headers=ConnectHeaders(headers=)}

原因

是 默认序列化器 StringDebeziumDeserializationSchema 只是调用了 对象的 toString()

查看

根据 Flink CDC2.0 连接MySQL,将表原有数据打印到控制台 案例

打开 StringDebeziumDeserializationSchema,设置断点如下:

这里可以查看到,只是调用 SourceRecord的 .toString() 方法

SourceRecord 的 .toString() 方法

进入 该方法,设置断点,如下:

可以发现,打印格式,与控制台打印的内容相同


原文出处:/show_1IX3WZFMTpXV.html