【问题标题】:Building Apache Spark using SBT: Invalid or corrupt jarfile使用 SBT 构建 Apache Spark:jarfile 无效或损坏
【发布时间】:2015-10-16 17:35:43
【问题描述】:

我正在尝试在我的本地计算机上安装 Spark。我一直在关注this 指南。我已经安装了JDK-7(也有JDK-8)和Scala 2.11.7。当我尝试使用sbt 构建Spark 1.4.1 时出现问题。我得到以下异常。

NOTE: The sbt/sbt script has been relocated to build/sbt.
      Please update references to point to the new location.

      Invoking 'build/sbt assembly' now ...

Attempting to fetch sbt
Launching sbt from build/sbt-launch-0.13.7.jar
Error: Invalid or corrupt jarfile build/sbt-launch-0.13.7.jar

我已寻找解决此问题的方法。我找到了一个很好的指南https://stackoverflow.com/a/31597283/2771315,它使用了预构建的版本。除了使用预建版本,有没有办法使用sbt 安装Spark?此外,出现Invalid or corrupt jarfile 错误是否有原因?

【问题讨论】:

  • 我建议尝试使用 Scala 2.10。 2.11 需要对构建做一些额外的处理,但是我上次在主干上使用 2.11 时,我也不得不手动更改一些源文件。 spark.apache.org/docs/latest/…
  • 无论您使用 Scala 2.11 还是 2.10,Spark 的 Maven 构建都比 SBT 构建维护得更好,因此请按照此处的说明进行构建:spark.apache.org/docs/latest/…

标签: scala apache-spark sbt apache-spark-1.4


【解决方案1】:

我遇到了同样的问题。我现在已经修好了。

这可能是因为 sbt-launch-0.13.7.jar 下载不成功,虽然可以看到文件存在,但不是正确的文件。该文件的大小约 1.2MB。如果小于这个值,你可以进入 build/ ,使用 "vim sbt-launch-0.13.7.jar" 或其他工具来打开 sbt-launch-0.13.7.jar 文件。

如果文件有这样的内容:

<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

表示没有下载 sbt-launch-0.13.7.jar。 然后打开同一目录下的sbt-launch-lib.bash,检查第41和42行,它给出了两个url。打开它以检查它们是否正常工作。

如果url1不起作用,手动下载sbt-launch.jar(可以使用url2,它可能会起作用,或者你可以从sbt官网下载),放在同一个目录,将其重命名为sbt-launch-0.13.7.jar,然后你应该在与下载相关的注释行(可能在47和68行之间),避免脚本再次下载。像这样:

acquire_sbt_jar () {
  SBT_VERSION=`awk -F "=" '/sbt\.version/ {print $2}'    ./project/build.properties`
  URL1=http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/${SBT_VERSION}/sbt-launch.jar
  URL2=http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/${SBT_VERSION}/sbt-launch.jar
  JAR=build/sbt-launch-${SBT_VERSION}.jar

  sbt_jar=$JAR

 # if [[ ! -f "$sbt_jar" ]]; then
 #   # Download sbt launch jar if it hasn't been downloaded yet
 #   if [ ! -f "${JAR}" ]; then
 #   # Download
 #   printf "Attempting to fetch sbt\n"
 #   JAR_DL="${JAR}.part"
 #   if [ $(command -v curl) ]; then
 #     (curl --silent ${URL1} > "${JAR_DL}" || curl --silent ${URL2} > "${JAR_DL}") && mv "${JAR_DL}" "${JAR}"
 #   elif [ $(command -v wget) ]; then
 #     (wget --quiet ${URL1} -O "${JAR_DL}" || wget --quiet ${URL2} -O "${JAR_DL}") && mv "${JAR_DL}" "${JAR}"
 #   else
 #     printf "You do not have curl or wget installed, please install sbt manually from http://www.scala-sbt.org/\n"
 #     exit -1
 #   fi
 #   fi
 #   if [ ! -f "${JAR}" ]; then
 #   # We failed to download
 #   printf "Our attempt to download sbt locally to ${JAR} failed. Please install sbt manually from http://www.scala-sbt.org/\n"
 #   exit -1
 #   fi
 #   printf "Launching sbt from ${JAR}\n"
 # fi
 }

然后使用“build/sbt assembly”再次构建火花。

希望你会成功。

如果我没有表达清楚,以下链接可能会有所帮助。

https://www.mail-archive.com/user@spark.apache.org/msg34358.html

Error: Invalid or corrupt jarfile sbt/sbt-launch-0.13.5.jarprabeesh 的回答

https://groups.google.com/forum/#!topic/predictionio-user/fllCh8n-0d4

【讨论】:

  • 这是一个非常类似于 Spark 需要做的事情。
  • 你有什么答案吗?我遇到了和你一样的问题!
【解决方案2】:

手动下载sbt-launch.jar文件(可以用url2,应该可以,也可以到sbt官网下载),放在同一目录下,重命名为sbt-launch-0.13.7 .jar,然后运行 ​​sbt/sbt 汇编命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    相关资源
    最近更新 更多