当我使用 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)
任何人都知道我该怎么做?
答案 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)
答案 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可以工作