问题
Spark Streaming 执行报错
java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
原因
ConsumerRecord 没有实现序列化,在执行需要序列化的操作时,即 persist 或 window、print。会报错:
解决
- 推荐:在使用 persist 或 window 之前,使用 map 将 ConsumerRecord 转换为可序列化的对象。
- 添加配置:
conf.set("spark.serializer","org.apache.spark.serializer.KryoSerialize")
conf.registerKryoClasses(util.Arrays.asList(classOf[ConsumerRecord[_, _]]).toArray.asInstanceOf[Array[Class[_]]])