1. 假设由数据库至kafka的flume中使用kafka channel,那么拦截器中加上的时间头信息,会被kafka channel去除,那么kafka中的数据将不再带有头信息。但是从kafka到HDFS时,kafkasource会自动添加消息处理时间作为头信息,为了解决零点漂移问题,需要将事件时间ts作为头信息。这种情况下flink是可以正常反序列化数据的。
2. 假设由数据库至kafka的flume中使用file channel + kafka sink,时间拦截器和ETL拦截器写在一起,kafka sink(producer)会将head和body一起作为kafka的value进行序列化,flink(consumer)的反序列化器无法解析带有head信息的kafka value,除非重新编写kafka消费者(flink)的反序列化器。