Flink Kafka源和接收器中的POJO序列化

时间:2020-09-17 13:14:24

标签: java scala serialization apache-kafka apache-flink

假设我在flink Datastream(即Datastream [Event])中具有以下类:

class Event( val id: Int,
             val Type: String,
             extraArgs: Map[String, Any]) extends Serializable {
...
}

要在flink运算符之间序列化它,我只需要此类扩展上述的Serializable类即可。但是,如果我也想在FlinkKafka生产者/消费者之间进行读写操作。

例如,对于FlinkKafkaConsumer,似乎我必须编写自己的org.apache.flink.api.common.serialization.DeserializationSchema,并且最重要的是重写T deserialize(byte [] message)函数。与SerializationSchema相同(即,覆盖serialize方法)。

有人可以提供Java或Scala的实现吗?最好是斋戒。

问题是我拥有csv格式的数据。当我解析它(例如,使用split(delim),新Map(...)等)以在反序列化函数中创建一个Event并形成Datastream [Event]时,它花费了很多时间,这使以下运算符成为瓶颈。因此,我认为,如果我已经在kafka主题中将数据作为序列化POJO进行了处理,则会花费更少的时间(我不介意此预处理)。

0 个答案:

没有答案