(run-main-0)java.lang.NoSuchMethodError

时间:2015-03-30 05:31:31

标签: scala apache-spark sbt nosuchmethoderror

当我使用 sbt 运行一个spark作业时遇到问题,我已经完成编译,但是当我运行命令run时,我遇到了下面的问题

 [error] (run-main-0) java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;
java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;
    at akka.actor.ActorCell$.<init>(ActorCell.scala:305)
    at akka.actor.ActorCell$.<clinit>(ActorCell.scala)
    at akka.actor.RootActorPath.$div(ActorPath.scala:152)
    at akka.actor.LocalActorRefProvider.<init>(ActorRefProvider.scala:465)
    at akka.remote.RemoteActorRefProvider.<init>(RemoteActorRefProvider.scala:124)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$2.apply(DynamicAccess.scala:78)
    at scala.util.Try$.apply(Try.scala:191)

任何人都知道我该怎么做?

9 个答案:

答案 0 :(得分:20)

当我使用scala-library-2.11 jar时遇到了同样的错误但是当我用scala-library-2.10 jar替换它时。它运行良好

答案 1 :(得分:8)

这可能是由使用不兼容的Scala版本引起的。当我从Scala 2.11降级到2.10时,我忘了修改一个软件包版本(因此一个软件包使用2.11,其余2.10),导致出现相同的错误。

注意:使用IntelliJ时我只遇到此问题。

答案 2 :(得分:7)

如果你收到错误,在这里,因为你无法使用Spark 2.1和Scala 2.11运行Jupiter笔记本,这是我能够使它工作的方式。假设你安装了Jupiter和toree

预先要求 - 确保Docker正在运行其他Make失败。 确保安装了gpg,否则生成失败。

构建步骤 -

export SPARK_HOME=/Users/<path>/spark-2.1.0-hadoop2.7/ 
git clone https://github.com/apache/incubator-toree.git 
cd incubator-toree 
make clean release APACHE_SPARK_VERSION=2.1.0 
pip install --upgrade ./dist/toree-pip/toree-0.2.0.dev1.tar.gz 
pip freeze |grep toree 
jupyter toree install --spark_home=$SPARK_HOME

=============================================== =========================

启动笔记本 -     SPARK_OPTS =&#39; - 主=本地[4]&#39; jupyter笔记本

答案 3 :(得分:6)

我使用了这些版本,现在一切正常。

    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.11.6</version>
    </dependency>

    <dependency>
        <groupId>com.typesafe.akka</groupId>
        <artifactId>akka-actor_2.11</artifactId>
        <version>2.3.11</version>
    </dependency>

答案 4 :(得分:2)

检查您使用的scala版本是否与预编译的spark版本相对应。  enter image description here

答案 5 :(得分:1)

可以使用版本2.11.8重现该问题。

目前,不需要降级。 只需将scala-library版本更新为 2.12.0

答案 6 :(得分:0)

我有完全相同的问题,并通过将scala 2.11.8降级为2.10.6来解决问题。

答案 7 :(得分:0)

我遇到了同样的问题,但我在哪里更改了scala-library版本?

安装(在Ubuntu 16.04上):

build.gradle

因此,当我从笔记本开始时,它告诉我使用不同的scala版本。但我还没有安装任何其他东西。 screenshot + scala version

我的spark jar文件夹包含sudo apt-get install oracle-java8-installer wget http://d3kbcqa49mib13.cloudfront.net/spark-2.0.2-bin-hadoop2.7.tgz && tar xvf spark-2.0.2-bin-hadoop2.7.tgz pip install toree && jupyter toree install 文件。但是如何告诉torree使用那个(或另一个)文件进行scala。

答案 8 :(得分:0)

对我来说,scala版本2.11和2.12都可以工作,降级到2.10.3可以工作