【问题标题】:Scala Spark java.lang.VerifyError: class scala.collection.mutable.WrappedArray overrides final method toBuffer.()Scala Spark java.lang.VerifyError:类 scala.collection.mutable.WrappedArray 覆盖最终方法 toBuffer.()
【发布时间】:2020-07-22 05:11:31
【问题描述】:

我试图在 intellij 上运行一个示例 scala spark 程序。我创建了一个 maven 项目并为项目添加了 scala 特性。我能够运行 scala hello world 程序,但我正在尝试运行 spark-scala,它会引发以下异常。

Exception in thread "main" java.lang.VerifyError: class scala.collection.mutable.WrappedArray overrides final method toBuffer.()Lscala/collection/mutable/Buffer;
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at org.apache.spark.SparkConf.loadFromSystemProperties(SparkConf.scala:65)
    at org.apache.spark.SparkConf.<init>(SparkConf.scala:60)
    at org.apache.spark.SparkConf.<init>(SparkConf.scala:55)
    at com.dnb.dsl.test.SparkDemo$.main(SparkDemo.scala:7)

我在这里附上程序,

 import org.apache.spark.{SparkConf, SparkContext} 
    object SparkDemo { def main(args: Array[String]) {
     val conf = new SparkConf().setAppName("SparkDemo").setMaster("local")
     val sc = new SparkContext(conf) 
     val input = sc.parallelize(Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
     input.foreach(println) 
       } 
    } 

pom.xml

<properties>
        <spark.version>2.0.1</spark.version>
        <scala.version>2.11</scala.version>
    </properties>
    <dependencies>
        <dependency> <!-- Spark dependency -->
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
    </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <source>1.8</source>
                        <target>1.8</target>
                        <compilerArgument>-Werror</compilerArgument>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build> 

从 intellij 附加 scala sdk 版本配置。 使用的Java版本:1.8

【问题讨论】:

  • 您需要将 Scala 版本从 2.13 降级到 2.11,或者更好的是,使用 Spark 2.4.5 和 Scala 2.12。
  • @mazaneicha 在线程“main”java.lang.NoSuchMethodError 中抛出另一个异常异常:scala.util.matching.Regex.(Ljava/lang/String;Lscala/collection/Seq;) V
  • stackoverflow.com/questions/43883325/…spark.apache.org/docs/2.0.0/#downloadingSpark 2.0.0 使用 Scala 2.11。您需要使用兼容的 Scala 版本 (2.11.x)。

标签: java scala apache-spark intellij-idea


【解决方案1】:

我会尝试不同的方法,正如@mazaneicha 建议降级您的Scala 版本。我将使用SBT 代替Maven,而不是ScalaIntelliJSBTScala 完全集成,SBT 非常易于使用。

例如,build.sbt 将是:

name := "my-project"

version := "0.1"

scalaVersion := "2.11.10"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.2.0"
libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.2.0"
libraryDependencies += "org.apache.spark" %% "spark-hive" % "2.2.0"

要为您的 spark 项目查找和下载库,您可以使用 Maven 存储库:

Spark Maven repository

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多