首页 > 解决方案 > 使用 scala 2.12.10 时 spark 的 pom.xml 依赖项

问题描述

在使用 scala 2.12.10 时,这些 Apache Spark 依赖项不起作用

<dependencies>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.12.10</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.12</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.12</artifactId>
        <version>3.0.1</version>
    </dependency>
</dependencies>

从 IntelliJ 运行 spark 应用程序时出错

线程“main”中的异常 java.lang.NoSuchMethodError: org.apache.spark.SparkConf$DeprecatedConfig.(SparkConf.scala:784) 的 org.apache.spark 的 scala.Product.$init$(Lscala/Product;)V .SparkConf$.(SparkConf.scala:605) 在 org.apache.spark.SparkConf$.(SparkConf.scala) 在 org.apache.spark.SparkConf.set(SparkConf.scala:94) 在 org.apache.spark。 SparkConf.set(SparkConf.scala:83) 在 org.apache.spark.SparkConf.setMaster(SparkConf.scala:115) 在 org.apache.spark.SparkContext$.updatedConf(SparkContext.scala:27​​17) 在 org.apache。 spark.SparkContext.(SparkContext.scala:153)

但是,这组依赖项在同一个 spark 应用程序中工作得很好。

    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.11.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.4.1</version>
    </dependency>

代码片段 -

import org.apache.spark.SparkContext
import org.apache.log4j.{Level, Logger}
object Testing1
    {
      def main(args : Array[String]): Unit = {
        Logger.getLogger("org").setLevel(Level.OFF)
        val sc = new SparkContext("local[*]" , "SparkDemo")
        val lines = sc.textFile("sample.txt");
        val words = lines.flatMap(line => line.split(' '))
        val wordsKVRdd = words.map(x => (x,1))
        val count = wordsKVRdd.reduceByKey((x,y) => x + y).map(x => (x._2,x._1)).sortByKey(false).map(x => (x._2, x._1)).take(10)
        count.foreach(println)
      }
    }

标签: scalamavenapache-sparkdependenciespom.xml

解决方案


此错误说明 Scala 版本不兼容。您要么有另一个依赖于 Scala 2.11 的依赖项,要么只需要mvn clean摆脱使用 Scala 2.11 编译的旧类。还要检查项目设置中配置的 Scala 版本。


推荐阅读