Apache spark Spark streaming和kafka缺少所需配置”;划分、分配、战略”;它没有默认值
我正在尝试使用纱线与Kafka一起运行spark streaming应用程序。我得到以下堆栈跟踪错误- 原因:org.apache.kafka.common.config.ConfigException:缺少没有默认值的必需配置“partition.assignment.strategy”。 位于org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:124) 位于org.apache.kafka.common.config.AbstractConfig.(AbstractConfig.java:48) 位于org.apache.kafka.clients.consumer.ConsumerConfig.(ConsumerConfig.java:194) 在org.apache.kafka.clients.consumer.KafkaConsumer.(KafkaConsumer.java:380) 在org.apache.kafka.clients.consumer.KafkaConsumer.(KafkaConsumer.java:363) 在org.apache.kafka.clients.consumer.KafkaConsumer.(KafkaConsumer.java:350) 在org.apache.spark.streaming.kafka010.cachedkafconsumer.(cachedkafconsumer.scala:45) 在org.apache.spark.streaming.kafka010.cachedkafconsumer$.get(cachedkafconsumer.scala:194) 在org.apache.spark.streaming.kafka010.kafkarditerator.(KafkaRDD.scala:252) 位于org.apache.spark.streaming.kafka010.KafkaRDD.compute(KafkaRDD.scala:212) 在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:324) 位于org.apache.spark.rdd.rdd.iterator(rdd.scala:288) 在org.apache.spark.rdd.MapPartitionsRDD.compute上(MapPartitionsRDD.scala:49) 在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:324) 位于org.apache.spark.rdd.rdd.iterator(rdd.scala:288) 位于org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) 位于org.apache.spark.scheduler.Task.run(Task.scala:109) 位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:345) 下面是我如何使用spark stream创建KafkaStream的代码片段-Apache spark Spark streaming和kafka缺少所需配置”;划分、分配、战略”;它没有默认值,apache-spark,apache-kafka,spark-streaming,spark-streaming-kafka,Apache Spark,Apache Kafka,Spark Streaming,Spark Streaming Kafka,我正在尝试使用纱线与Kafka一起运行spark streaming应用程序。我得到以下堆栈跟踪错误- 原因:org.apache.kafka.common.config.ConfigException:缺少没有默认值的必需配置“partition.assignment.strategy”。 位于org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:124) 位于org.apache.kafka.common.config.A
val ssc = new StreamingContext(sc, Seconds(60))
val kafkaParams = Map[String, Object](
"bootstrap.servers" -> "*boorstrap_url:port*",
"security.protocol" -> "SASL_PLAINTEXT",
"sasl.kerberos.service.name" -> "kafka",
"key.deserializer" -> classOf[StringDeserializer],
"value.deserializer" -> classOf[StringDeserializer],
"group.id" -> "annotation-test",
//Tried commenting and uncommenting this property
//"partition.assignment.strategy"->"org.apache.kafka.clients.consumer.RangeAssignor",
"auto.offset.reset" -> "earliest",
"enable.auto.commit" -> (false: java.lang.Boolean))
val topics = Array("*topic-name*")
val kafkaStream = KafkaUtils.createDirectStream[String, String](
ssc,
PreferConsistent,
Subscribe[String, String](topics, kafkaParams))
val valueKafka = kafkaStream.map(record => record.value())
我看过以下的帖子-
根据这一点,我将fat jar中的kafka util jar更新为0.10.2.0版本,默认情况下从spark stream kafka jar打包为瞬态依赖项。当我在单个节点上运行它时,通过将master设置为local,我的工作也可以正常工作。我正在运行spark 2.3.1版本。将
kafka客户端-*.jar
添加到spark jar文件夹中kafka-clients-*.jar
位于kafka-*/lib
目录中。您可以尝试将策略更改为“org.apache.kafka.clients.consumer.RoundRobinAssignor”或尝试设置“consumer.partition.assignment.strategy”而不是“partition.assignment.strategy”我尝试了它,然后得到了错误-java.lang.NoSuchMethodError:org.apache.kafka.clients.consumer.KafkaConsumer.assign(Ljava/util/Collection;)Vtry设置“consumer.partition.assignment.strategy”而不是“partition.assignment.strategy”。我得到了相同的错误-缺少所需的配置“partition.assignment.strategy”“没有默认值。我认为这个问题可能有用: