Исправлена ​​ошибка "Исправлена ​​ошибка инициализации компилятора"

Я только что установил искру на свою новую машину и получил следующую ошибку после установки Java, Scala и Apache-искры с использованием homebrew. Процесс установки приведен ниже:

$ brew cask install java
$ brew install scala
$ brew install apache-spark

После установки, когда я пытаюсь запустить базовый пример с помощью spark-shell, я получаю следующую ошибку. Любая помощь была высоко оценена.

$ spark-shell
 Using Spark 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)`

Ответ 1

Spark несовместим с Java 9, версия версии brew cask install java будет установлена, если она обновлена. Если вы установили Java 9, вам нужно будет установить вместо него Java 8:

brew cask uninstall java
brew tap caskroom/versions
brew cask search java
brew cask install java8

Ответ 2

Поскольку ZackK пишет, что искра несовместима с Java9, вы можете проверить версии java, которые у вас есть на вашем компьютере, и выбрать совместимую версию, если у вас ее есть.

$ sudo update-alternatives --config java

Что в моем случае возвращено:

Есть два варианта альтернативной java (предоставление/usr/bin/java).

  • 0/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 автоматический режим
  • * 1/opt/java/jdk-9.0.4/bin/java 1 ручной режим

Звездочка перед 1 обозначает активную версию. Выбор 0 изменил его на совместимую версию.

$ java -version

который возвратился: версия openjdk "1.8.0_151"

После смены искровой оболочки.

Ответ 3

Я столкнулся с той же проблемой. Но когда я проверил Java-версию своего ноутбука, было 9. Я только что перешел на Java 8 и обнаружил, что все работает нормально.

Просто проверьте это решение. Надеюсь, это сработает, если вы получите точно такую же ошибку, как и при запуске этого потока.

Ответ 4

win10: Вы должны преобразовать в jdk8: Настроить JAVA_HOME = jdk8; Откажитесь от пути C:\ProgramData\Oracle\Java\javapath; (он всегда показывает jdk9)

Ответ 5

Проблема: Spark несовместим с текущей версией Java

Вот еще одно решение, которое использует SDKMAN

Установите SDKMAN

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

Затем вы должны закрыть и открыть другой терминал.

После этого установите Java 8

sdk install java 8.0.181-zulu

Теперь проверьте, работает ли он. Пойдите в свою свечу/мусорное ведро, затем бегите

./spark-shell

Вы не должны снова видеть эту ошибку.

Ответ 6

обновление альтернатив требуется не только для Java $ sudo update-alternatives --config java  но также и Javac, Javap и т.д. $ sudo update-alternatives --config javac

Так что лучше удалить выше 8 версий Java, а затем установить Java 8.