web-dev-qa-db-fra.com

Spark Shell "Echec de l'initialisation du compilateur" Erreur sur un mac

Je viens d'installer spark sur ma nouvelle machine et j'obtiens l'erreur suivante après avoir installé Java, Scala et Apache-spark sous homebrew. Le processus d'installation est donné ci-dessous:

$ brew cask install Java
$ brew install scala
$ brew install Apache-spark

Une fois installé, lorsque j'essaie d'exécuter un exemple de base en utilisant spark-Shell, j'obtiens l'erreur suivante. Toute aide grandement appréciée.

$ spark-Shell
 Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).

Failed to initialize compiler: object Java.lang.Object in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the Java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programmatically, settings.usejavacp.value = true.

Failed to initialize compiler: object Java.lang.Object in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the Java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programmatically, settings.usejavacp.value = true.
Exception in thread "main" Java.lang.NullPointerException
    at scala.reflect.internal.SymbolTable.exitingPhase(SymbolTable.scala:256)
    at scala.tools.nsc.interpreter.IMain$Request.x$20$lzycompute(IMain.scala:896)
    at scala.tools.nsc.interpreter.IMain$Request.x$20(IMain.scala:895)
    at scala.tools.nsc.interpreter.IMain$Request.headerPreamble$lzycompute(IMain.scala:895)
    at scala.tools.nsc.interpreter.IMain$Request.headerPreamble(IMain.scala:895)
    at scala.tools.nsc.interpreter.IMain$Request$Wrapper.preamble(IMain.scala:918)
    at scala.tools.nsc.interpreter.IMain$CodeAssembler$$anonfun$apply$23.apply(IMain.scala:1337)
    at scala.tools.nsc.interpreter.IMain$CodeAssembler$$anonfun$apply$23.apply(IMain.scala:1336)
    at scala.tools.nsc.util.package$.stringFromWriter(package.scala:64)
    at scala.tools.nsc.interpreter.IMain$CodeAssembler$class.apply(IMain.scala:1336)
    at scala.tools.nsc.interpreter.IMain$Request$Wrapper.apply(IMain.scala:908)
    at scala.tools.nsc.interpreter.IMain$Request.compile$lzycompute(IMain.scala:1002)
    at scala.tools.nsc.interpreter.IMain$Request.compile(IMain.scala:997)
    at scala.tools.nsc.interpreter.IMain.compile(IMain.scala:579)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:567)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:565)
    at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:807)
    at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:681)
    at scala.tools.nsc.interpreter.ILoop.processLine(ILoop.scala:395)
    at org.Apache.spark.repl.SparkILoop$$anonfun$initializeSpark$1.apply$mcV$sp(SparkILoop.scala:38)
    at org.Apache.spark.repl.SparkILoop$$anonfun$initializeSpark$1.apply(SparkILoop.scala:37)
    at org.Apache.spark.repl.SparkILoop$$anonfun$initializeSpark$1.apply(SparkILoop.scala:37)
    at scala.tools.nsc.interpreter.IMain.beQuietDuring(IMain.scala:214)
    at org.Apache.spark.repl.SparkILoop.initializeSpark(SparkILoop.scala:37)
    at org.Apache.spark.repl.SparkILoop.loadFiles(SparkILoop.scala:98)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:920)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
    at scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97)
    at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:909)
    at org.Apache.spark.repl.Main$.doMain(Main.scala:70)
    at org.Apache.spark.repl.Main$.main(Main.scala:53)
    at org.Apache.spark.repl.Main.main(Main.scala)
    at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
    at Java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.base/Java.lang.reflect.Method.invoke(Method.Java:564)
    at org.Apache.spark.deploy.SparkSubmit$.org$Apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:755)
    at org.Apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
    at org.Apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
    at org.Apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119)
    at org.Apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)`
14
lordlabakdas

Spark est incompatible avec Java 9, la version que brew cask install Java installera s’il est à jour. Si vous avez installé Java 9, vous devez plutôt installer Java 8:

brew cask uninstall Java
brew tap caskroom/versions
brew cask search Java
brew cask install Java8
30
ZackK

Comme ZackK a écrit, spark est incompatible avec Java9, vous pouvez donc vérifier les versions de Java que vous avez sur votre ordinateur et choisir une version compatible, en supposant que vous en possédiez une.

$ Sudo update-alternatives --config Java

Ce qui dans mon cas est revenu:

Il existe 2 choix pour l’alternative Java (fournissant/usr/bin/Java).

  • 0/usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java 1081 en mode automatique
  • * 1/opt/Java/jdk-9.0.4/bin/mode manuel Java 1

L'astérisque devant 1 indique la version active. Choisir 0 a changé en une version compatible.

$ Java -version

qui a renvoyé: openjdk version "1.8.0_151"

Après le changement, spark-Shell a fonctionné.

3
mdn

J'ai rencontré le même problème. Mais lorsque j'ai vérifié la version Java de mon ordinateur portable, il était 9 . Je viens de passer à Java 8 et j'ai trouvé que tout fonctionnait bien.

Il suffit de vérifier cette solution. J'espère que cela fonctionnera si vous obtenez exactement la même erreur que le début de ce fil.

1
Binod Suman

win10: Vous devez convertir en jdk8: Configurer Java_HOME = jdk8; Ignorer du chemin le chemin C:\ProgramData\Oracle\Java\javapath; (il affichera toujours le jdk9)

0
Kras

Problème: Spark incompatible avec la version Java actuelle 

Voici une autre solution qui utilise SDKMAN

Installer sdkman

curl -s "https://get.sdkman.io" | bash

Ensuite, vous devez fermer et ouvrir un autre terminal.

Après cela, installez Java 8

sdk install Java 8.0.181-zulu

Maintenant, testez si cela fonctionne. Allez à votre étincelle/bin puis courez

./spark-Shell

Vous ne devriez plus voir cette erreur.

0
Haha TTpro