Создание Apache Spark с использованием SBT: недопустимый или поврежденный jarfile

Я пытаюсь установить Spark на свою локальную машину. Я слежу за этим руководством. Я установил 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

Я искал решение этой проблемы. Я нашел хороший путеводитель qaru.site/info/499525/..., который использует предварительно построенную версию. Помимо использования предварительно построенной версии, существует ли способ установить Spark с помощью sbt? Кроме того, есть ли причина, почему возникает ошибка Invalid or corrupt jarfile?

Ответ 1

Я встретил ту же проблему. Я исправил его сейчас.

Вероятно, потому, что sbt-launch-0.13.7.jar имеет неудачную загрузку, хотя вы можете видеть, что файл существует, но это не правильный файл. Размер файла около 1,2 МБ. Если это меньше, вы можете войти в сборку /, использовать "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), избегайте script загружать его снова, Вот так:

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
 }

Затем используйте "сборка сборки/сборки", чтобы снова создать искру.

Надеюсь, что вы добьетесь успеха.

Если бы я не был четко выражен, могут оказаться полезными следующие ссылки.

https://www.mail-archive.com/[email protected]/msg34358.html

Ошибка: неверный или поврежденный jarfile sbt/sbt-launch-0.13.5.jar ответ prabeesh

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

Ответ 2

Загрузите файл sbt-launch.jar вручную (вы можете использовать url2, он может работать или вы можете скачать его с официального сайта sbt), поместите его в тот же каталог, переименуйте его в sbt-launch-0.13.7.jar, затем запустите команду сборки sbt/sbt.