Подтвердить что ты не робот

Почему искровая оболочка не работает с NullPointerException?

Я пытаюсь выполнить spark-shell в Windows 10, но я все время получаю эту ошибку каждый раз, когда запускаю ее.

Я использовал как последнюю версию, так и версию spark-1.5.0-bin-hadoop2.4.

15/09/22 18:46:24 WARN Connection: BoneCP specified but not present in     
CLASSPATH (or one of dependencies)
15/09/22 18:46:24 WARN Connection: BoneCP specified but not present in                 CLASSPATH (or one of dependencies)
15/09/22 18:46:27 WARN ObjectStore: Version information not found in    
metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
15/09/22 18:46:27 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
15/09/22 18:46:27 WARN : Your hostname, DESKTOP-8JS2RD5 resolves to a loopback/non-reachable address: fe80:0:0:0:0:5efe:c0a8:103%net1, but we couldn't find any external IP address!
java.lang.RuntimeException: java.lang.NullPointerException
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
    at org.apache.spark.sql.hive.client.ClientWrapper.<init>    (ClientWrapper.scala:171)
    at org.apache.spark.sql.hive.HiveContext.executionHive$lzycompute(HiveContext.scala    :163)
    at org.apache.spark.sql.hive.HiveContext.executionHive(HiveContext.scala:161)
    at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:168)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.apache.spark.repl.SparkILoop.createSQLContext(SparkILoop.scala:1028)
    at $iwC$$iwC.<init>(<console>:9)
    at $iwC.<init>(<console>:18)
    at <init>(<console>:20)
    at .<init>(<console>:24)
    at .<clinit>(<console>)
    at .<init>(<console>:7)
    at .<clinit>(<console>)
    at $print(<console>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065)
    at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1340)
    at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:840)
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871)
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819)
    at org.apache.spark.repl.SparkILoop.reallyInterpret$1(SparkILoop.scala:857)
    at org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:902)
    at org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:814)
    at org.apache.spark.repl.SparkILoopInit$$anonfun$initializeSpark$1.apply(SparkILoopInit.scala:132)
    at org.apache.spark.repl.SparkILoopInit$$anonfun$initializeSpark$1.apply(SparkILoopInit.scala:124)
    at org.apache.spark.repl.SparkIMain.beQuietDuring(SparkIMain.scala:324)
    at org.apache.spark.repl.SparkILoopInit$class.initializeSpark(SparkILoopInit.scala:124)
    at org.apache.spark.repl.SparkILoop.initializeSpark(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1$$anonfun$apply$mcZ$sp$5.apply$mcV$sp(SparkILoop.scala:974)
    at org.apache.spark.repl.SparkILoopInit$class.runThunks(SparkILoopInit.scala:159)
    at org.apache.spark.repl.SparkILoop.runThunks(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoopInit$class.postInitialization(SparkILoopInit.sca      la:108)
    at org.apache.spark.repl.SparkILoop.postInitialization(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc      ess$1.apply$mcZ$sp(SparkILoop.scala:991)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc      ess$1.apply(SparkILoop.scala:945)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc      ess$1.apply(SparkILoop.scala:945)
    at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scal      a:135)
    at org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$process(SparkILoop.scala:945)
    at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:1059)
    at org.apache.spark.repl.Main$.main(Main.scala:31)
    at org.apache.spark.repl.Main.main(Main.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:672)
    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:120)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
  Caused by: java.lang.NullPointerException
    at java.lang.ProcessBuilder.start(Unknown Source)
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:445)
    at org.apache.hadoop.util.Shell.run(Shell.java:418)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:739)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:722)
    at org.apache.hadoop.fs.FileUtil.execCommand(FileUtil.java:1097)
    at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.loadPermissionInfo(RawLocalFileSystem.java:559)
    at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.getPermission(RawLocalFileSystem.java:534)
   org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:599)
    at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554)

org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508)       ... 56 больше

  <console>:10: error: not found: value sqlContext
               import sqlContext.implicits._
                ^
  <console>:10: error: not found: value sqlContext
               import sqlContext.sql
                ^
4b9b3361

Ответ 1

Я использовал Spark 1.5.2 с Hadoop 2.6 и имел схожие проблемы. Решив выполнить следующие действия:

  • Загрузите winutils.exe из репозиторий в какую-либо локальную папку, например. C:\hadoop\bin.

  • Установите HADOOP_HOME в C:\hadoop.

  • Создайте каталог c:\tmp\hive (используя проводник Windows или любой другой инструмент).

  • Откройте командную строку с правами администратора.

  • Запустите C:\hadoop\bin\winutils.exe chmod 777 /tmp/hive

С этим я все еще получаю некоторые предупреждения, но никаких ERROR и не могу запускать приложения Spark просто.

Ответ 2

Я столкнулся с аналогичной проблемой, решил ее решить, поставив winutil внутри папки bin. Hadoop_home должен быть установлен как C:\Winutils и winutil для размещения в C:\Winutils\bin.

Windows 10 64 бит Winutils доступны в https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin

Также убедитесь, что в командной строке имеется административный доступ.

Обратитесь https://wiki.apache.org/hadoop/WindowsProblems

Ответ 3

Я предполагаю, что вы работаете в https://issues.apache.org/jira/browse/SPARK-10528. Я видел ту же проблему, что и в Windows 7. Первоначально я получал исключение NullPointerException так же, как и вы. Когда я поместил winutils в каталог bin и установил HADOOP_HOME, чтобы указать на каталог Spark, я получил ошибку, описанную в проблеме JIRA.

Ответ 4

Или, возможно, эта ссылка ниже будет легче следовать,

https://wiki.apache.org/hadoop/WindowsProblems

В принципе загрузите и скопируйте файл winutils.exe в свою папку искры \bin. Повторно запустить искровую оболочку

Если вы не установили свой /tmp/hive в состояние записи, сделайте это.

Ответ 5

Для Python - создайте SparkSession в вашем python (этот раздел конфигурации предназначен только для Windows)

spark = SparkSession.builder.config("spark.sql.warehouse.dir", "C:/temp").appName("SparkSQL").getOrCreate()

Скопировать winutils.exe и сохранить в C:\winutils\bin и выполнить следующие команды

C:\Windows\system32>C:\winutils\bin\winutils.exe chmod 777 C:/temp

Запустить командную строку в режиме ADMIN (Запуск от имени администратора)

Ответ 6

Вам необходимо предоставить разрешение директории /tmp/hive для устранения этого исключения.

Надеемся, что у вас уже есть winutils.exe и установите переменную среды HADOOP_HOME. Затем откройте командную строку и выполните следующую команду в качестве администратора:

Если winutils.exe присутствует в папке D:\winutils\bin, а \tmp\hive также находится в D-диске:

D:\winutils\bin\winutils.exe chmod 777 D:\tmp\hive

Для получения дополнительной информации вы можете сослаться на следующие ссылки:

Частые проблемы возникли во время разработки Spark
Как запустить Apache Spark в Windows7 в автономном режиме

Ответ 7

Вы можете решить эту проблему, поместив mysqlconnector jar в папку spark-1.6.0/libs и перезагрузите его снова. Он работает.

Важно, чтобы вместо запуска искровой оболочки вы должны были

spark-shell --driver-class-path /home/username/spark-1.6.0-libs-mysqlconnector.jar

Надеюсь, что это сработает.

Ответ 8

В моей проблеме были другие .exe/Jars внутри папки winutils/bin. Поэтому я очистил всех остальных и остался с winutils.exe один. Использовал искру 2.1.1

Ответ 9

Проблема была решена после установки правильной версии Java в моем случае ее java 8 и установки переменных окружения. Убедитесь, что вы запустили winutils.exe для создания временного каталога, как показано ниже.

c:\winutils\bin\winutils.exe chmod 777 \tmp\hive

Выше не должно возвращаться никакая ошибка. Используйте java -version, чтобы проверить версию java, которую вы используете, перед вызовом искровой оболочки.