【发布时间】:2021-06-07 20:46:23
【问题描述】:
我正在使用带有 JDK 11 的 scala Spark Streaming Kafka。但我收到以下错误。
线程“main”中的异常 java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps;
下面是我正在使用的代码。
val conf = new SparkConf().setMaster("local[*]").setAppName("KafkaExample")
.set("spark.mongodb.input.uri", "mongodb://127.0.0.1/db.table_data")
.set("spark.mongodb.output.uri", "mongodb://127.0.0.1/db.table_data")
.set("spark.driver.allowMultipleContexts", "false")
.set("spark.ui.enabled", "false")
val kafkaParams = Map("metadata.broker.list" -> "localhost:9092")
val topics = List("topic").toSet
val lines = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](
ssc, kafkaParams, topics)
下面是我的 pom.xml
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>2.4.8</version><!--<version>2.3.2</version>-->
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>2.4.8</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.12</artifactId>
<version>2.4.8</version><!--<version>2.3.2</version>-->
<!--<scope>provided</scope>-->
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-10 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka_2.11</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.mongodb.spark</groupId>
<artifactId>mongo-spark-connector_2.12</artifactId>
<version>2.4.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.0</version>
</dependency>
问题出现在KafkaUtils.createDirectStream() 中,我检查了 maven 和 scala 兼容性 JDK 11 与 scala 2.12 及更高版本兼容,我们对 spark-streaming-kafka jar 没有任何 maven 依赖项。如果我的分析有误,请告诉我,我应该为 JDK 11 使用 spark-streaming-kafka 哪个 jar
【问题讨论】:
-
spark-streaming-kafka_2.11 不适用于 scala 2.12。 2.11 和 2.12 不是二进制兼容的。也许你需要使用mvnrepository.com/artifact/org.apache.spark/… which target's 2.12 is your Kafka broker >0.10 ?
-
我的 kafka 版本是 kafka_2.13-2.6.0 是否大于 0.10。另外,当我使用您建议的 jar 依赖项时,是否需要在 KafkaUtils.createDirectStream() 中进行大量代码更改?
-
从这里获得帮助并解决了问题。 stackoverflow.com/questions/55923943/…
标签: apache-spark apache-kafka spark-streaming java-11