错误:无效或损坏jarfile sbt / sbt-launch-0.13.5.jar

时间:2015-07-23 18:05:01

标签: scala apache-spark

我一直在尝试使用tutorial安装spark,每次运行命令sbt / sbt程序集时,都会收到错误“错误:无效或损坏jarfile sbt / sbt-launch-0.13.5.jar “

我已经尝试了一切:将sbt文件单独添加到spark文件夹中的sbt文件夹,单独安装sbt,检查下载并重新安装,但是徒劳无功。关于我做错了什么的建议?感谢。

5 个答案:

答案 0 :(得分:32)

好的,玩了一会儿后我终于明白了,希望这对你也有用。该教程构建了spark,它们确实提供了预构建的二进制文件。我正在使用Spark 1.2.0作为一个注释(1.4.1对我来说不起作用)

这是在Ubuntu 15.04上,但应该在14.04相同的

1)从bashrc中删除以下行

export SCALA_HOME=/usr/local/src/scala/scala-2.10.4
export PATH=$SCALA_HOME/bin:$PATH

2)删除并重新安装scala

sudo rm -rf /usr/local/src/scala
# The following line is only needed if you installed scala another way, if so remove the #
# sudo apt-get remove scala-library scala
wget http://www.scala-lang.org/files/archive/scala-2.11.7.deb
sudo dpkg -i scala-2.11.7.deb
sudo apt-get update
sudo apt-get install scala

3)下载 PreBuilt Spark并解压缩

wget http://d3kbcqa49mib13.cloudfront.net/spark-1.2.0-bin-hadoop2.4.tgz
tar -xzvf spark-1.2.0-bin-hadoop2.4.tgz 

4)运行spark-shell

cd spark-1.2.0-bin-hadoop2.4/
./bin/spark-shell

来源(基本上我从哪里读取,此解决方案已经过试用和错误)

https://chongyaorobin.wordpress.com/2015/07/01/step-by-step-of-installing-apache-spark-on-apache-hadoop/
https://gist.github.com/visenger/5496675

答案 1 :(得分:2)

如果您已从http://d3kbcqa49mib13.cloudfront.net/spark-1.1.0.tgz下载了spark包,则交叉检查文件 - " sbt / sbt-launch-0.13.5.jar"。如果它只包含小(5-6行)html内容,那么你需要手动下载jar文件。这个html文件只是表明找不到所需的jar文件。您可以按照以下步骤使用centos:

  1. 手动下载jar:
    wget http://dl.bintray.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.1/sbt-launch.jar ./sbt/sbt-launch-0.13.5.jar
  2. 防止自动下载jar文件:
    sed -i '47,68s/^/#/' sbt/sbt-launch-lib.bash
  3. 再次安装火花:
    sbt/sbt assembly
  4. 在不改变scala安装的情况下,它对我有用。希望它有所帮助。

答案 2 :(得分:1)

sbt脚本无法正确下载sbt-launch-0.13.5.jar,因为它正在使用的URL一定有问题。因此,它下载的文件只包含一个HTML标题(400或302代码)。在更好的解决方案可用之前,作为一种解决方法,我会事先手动下载sbt-launch-0.13.5.jar。

答案 3 :(得分:0)

SPARK_HOME / sbt / sbt-launch-lib.bash 脚本中,使用以下内容将第53行替换为第57行

if hash curl 2>/dev/null; then
  (curl --fail --location --silent ${URL1} > ${JAR_DL} ||\
   (rm -f "${JAR_DL}" && curl --fail --location --silent ${URL2} > ${JAR_DL})) && \
   mv "${JAR_DL}" "${JAR}"
elif hash wget 2>/dev/null; then
  (wget --quiet ${URL1} -O ${JAR_DL} ||\
   (rm -f "${JAR_DL}" && wget --quiet ${URL2} -O ${JAR_DL})) &&\
   mv "${JAR_DL}" "${JAR}"
else

然后再试一次,运行sbt汇编命令

sbt/sbt assembly

最简单的方法是手动安装sbt,如下所示

下载sbt deb文件

wget http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb

然后运行

sudo dpkg -i sbt-0.13.5.deb
sudo apt-get update
sudo apt-get install sbt

然后构建使用 来自spark home文件夹的sbt assembly而不是sbt/sbt assembly

答案 4 :(得分:0)

@Frozenfire,我不确定是否可能,但Spark documentation Overview说:

  

对于Scala API,Spark 1.4.1使用Scala 2.10。你需要使用一个   兼容的Scala版本(2.10.x)。

我想知道这是否是你遇到这个问题的原因:

  

我正在使用Spark 1.2.0作为注释(1.4.1对我来说不起作用)

因为你这样做:

sudo dpkg -i scala-2.11.7.deb

下载并安装scala-2.11.7

我不知道,但这可能是一个线索!

PS1:这是对Frozenfire的回答的更多评论,但由于缺乏声誉我无法评论,我想分享这个。

PS2:Building for Scala 2.11