上一篇博客中,我们提到了如何去通过StreamAPI访问Flink CDC的结果,但是往往很多时候,访问出来的结果都很难被下游直接使用,还需要做很多String类型的数据处理,这里就单独开一篇博客来讲讲如何,在读的时候,一次性做到数据根据我们的需要去展示,也就是展示的更加简洁优雅一点。
不跟你多BB,直接上源代码,有疑问的可以评论区交流,感谢。
import com.alibaba.fastjson.JSONObject;
import com.alibaba.ververica.cdc.debezium.DebeziumDeserializationSchema;
import io.debezium.data.Envelope;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.util.Collector;
import org.apache.kafka.connect.data.Field;
import org.apache.kafka.connect.data.Schema;
import org.apache.kafka.connect.data.Struct;
import org.apache.kafka.connect.source.SourceRecord;
import java.util.List;
public class CustomizeDeserialization implements DebeziumDeserializationSchema<String> {
private Struct structValue;
private JSONObject getTableColumns(String type) {
Struct beforeOrAfterFields = structValue.getStruct(type);
JSONObject beforeOrAfterJson = new JSONObject();
if (beforeOrAfterFields != null) {
Schema beforeOrAfterJsonSchema = beforeOrAfterFields.schema();
List<Field> beforeOrAfterListFields = beforeOrAfterJsonSchema.fields();
for (Field beforeOrAfterColumnField : befor