数据源:kafka topic数据类型为json
业务场景:解析json,由于数据层级比较深,而且包含数组,此处键值可能为空
所以数据就变成了双流join,甚至是多流join。
问题原因:采用left join导致数据回撤,然后同一个主键数据产生重复
是采用inner join 还是 outer join,具体区别见 Flink Sql教程(5)_狄杰的博客-CSDN博客_connector.startup-mode
Flink Sql on Zeppelin(5)——双流Join_狄杰的博客-CSDN博客
由于此处关联可能存在键值为空匹配不到的情况,采用了很多left join,避免数据丢失的问题。
数据调试过程比较复杂,中间加了若干个db sink,来检查中间结果。
数据最终是sink到kafka的,kafka sink 和db sink有个很大的差异,db sink可以兼容retract机制,数在mysql中