尝试使用Kafka运行Spark Streaming作业时出现以下错误:
org.apache.spark.SparkException: org.apache.spark.SparkException: Couldn't find leaders for Set([<topicName>,1])
我读到可能会发生此错误,因为其中一个Kafka节点已关闭。所以,我检查了它,情况确实如此:在3个节点中,其中1个节点已关闭。我的问题是,是否有可能以这样的方式配置(从Scala代码中)Kafka消费者,即使某些节点关闭,它仍然可以工作?它与复制因子有关(据我所知,应该大于1),但不确定如何从代码中设置它:
val eEventsMap = eventsTopic.split(",").toSet
val kafkaParams = Map[String, String]("metadata.broker.list" -> "172.135.23.25:9092,172.135.23.35:9092,172.135.23.45:9092",
"auto.offset.reset" -> "smallest")
val events = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, eventsMap).map(_._2)