spark directstream 消费kafka数据的时候出现报错
java.io.EOFException: Received -1 when reading from channel, socket has likely been closed.

val brokers = “hadoop:2181”
val kafkaParams = Map[String,String](“metadata.broker.list” -> brokers,
//smallest : 自动把offset设为最早的offset数据;
//largest : 自动把offset设为最新的offset数据;
“auto.offset.reset” -> “smallest”,
“serializer.class” -> “kafka.serializer.StringDecoder”)
val lines = KafkaUtils.createDirectStreamString,String,StringDecoder,StringDecoder.map(_._2)
问题就在于brokers
brokers是kafka生产者的端口,错在填了ZK的端口,所以无法发现生产数据,所以报错是里边没数据。
只要把brokers="hadoop:9092"就可以正常找到生产数据,并且可以正常消费了。
如果还是有问题就要看看kafka配置文件,server.properties
添加这个配置就好
listeners=PLAINTEXT://:9092
或者直接添加
port=9092
都可以
本文解析了 Spark Direct Stream 在消费 Kafka 数据时出现的 EOF 异常问题,详细介绍了错误原因在于配置中将 Zookeeper 端口误作为 Kafka 的 broker 端口,导致无法发现生产者数据。通过更正 broker 配置为正确的 Kafka 端口,问题得以解决。同时,文章还提到了可能需要检查 Kafka 的 server.properties 配置文件。

被折叠的 条评论
为什么被折叠?



