2015-07-26 6 views
11

Sto tentando di installare Spark sul mio computer locale. Ho seguito la guida this. Ho installato JDK-7 (anche con JDK-8) e Scala 2.11.7. Si verifica un problema quando si tenta di utilizzare sbt per creare Spark 1.4.1. Ottengo la seguente eccezione.Creazione di Apache Spark tramite SBT: jarfile non valido o danneggiato

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 

Ho cercato una soluzione a questo problema. Ho trovato una bella guida https://stackoverflow.com/a/31597283/2771315 che utilizza una versione pre-costruita. Oltre all'utilizzo della versione pre-compilata, esiste un modo per installare Spark utilizzando sbt? Inoltre, c'è un motivo per cui si verifica l'errore Invalid or corrupt jarfile?

+0

Sei su Ubuntu? –

+2

Suggerisco di provare ad usare Scala 2.10. 2.11 richiede qualche elaborazione aggiuntiva sulla build, ma l'ultima volta che ho usato il 2.11 sul trunk, ho dovuto anche modificare manualmente alcuni file sorgente. http://spark.apache.org/docs/latest/building-spark.html#building-for-scala-211 – heenenee

+2

Sia che si utilizzi Scala 2.11 o 2.10, la build Maven di Spark è migliore della build SBT, quindi segui le istruzioni qui per la costruzione: http://spark.apache.org/docs/latest/building-spark.html#building-for-scala-211 –

risposta

18

Ho incontrato lo stesso problema. L'ho riparato ora.

Questo probabilmente perché sbt-launch-0.13.7.jar ha un download non riuscito, sebbene sia possibile vedere che il file esiste, ma non è un file corretto. Il file è circa 1,2 MB in termini di dimensioni. Se inferiore a questo, è possibile entrare nella build /, utilizzare "vim sbt-launch-0.13.7.jar" o altri strumenti per aprire il file sbt-launch-0.13.7.jar.

Se il file ha il contenuto in questo modo:

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

E implys che SBT-lancio-0.13.7.jar non viene scaricato. Quindi apri sbt-launch-lib.bash nella stessa directory, controlla le righe 41 e 42, fornisce due URL. Aprilo per verificare se funzionano bene.

Se url1 non funziona, scaricare il sbt-launch.jar manualmente (è possibile utilizzare url2, può opere, oppure si può scaricare dal sito ufficiale di SBT), metterlo nella stessa directory, rename a sbt-launch-0.13.7.jar, quindi si shoud linee di commento in relazione al download (può essere tra le righe 47 e 68), evitare lo script scaricarlo di nuovo. In questo modo:

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 
} 

Quindi utilizzare "build/sbt assembly" per generare nuovamente la scintilla.

Spero che ci riuscirai.

Se non ho espresso chiaramente, i seguenti collegamenti possono essere utili.

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

Error: Invalid or corrupt jarfile sbt/sbt-launch-0.13.5.jar la risposta prabeesh

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

+4

Questo è una cosa molto Spark-like da fare. –

+0

hai qualche risposta fino ad ora? Ho incontrato esattamente lo stesso problema di te! – HappyCoding

0

Scaricare il file sbt-launch.jar manualmente (si può usare url2, può funzionare, oppure si può scaricare dal sito ufficiale sbt sito Web), inserirlo nella stessa directory, rinominarlo in sbt-launch-0.13.7.jar, quindi eseguire il comando assembly sbt/sbt.

Problemi correlati