【问题标题】:Spark Streaming Kafka with Java11 scala code IssueSpark Streaming Kafka 与 Java11 Scala 代码问题
【发布时间】: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

【问题讨论】:

标签: apache-spark apache-kafka spark-streaming java-11


【解决方案1】:
  1. DirectStream API 已弃用,您应该使用 spark-sql-kafka-0-10 依赖项。 Mongo Spark 驱动程序也适用于 Spark SQL

  2. 正如评论的那样,您正在混合您的 Scala 版本(代理 Scala 版本无关紧要),并且您也在混合您的 Spark 版本

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 2014-11-25
    • 2018-09-15
    相关资源
    最近更新 更多