Perché spark-shell fallisce con NullPointerException?

Cerco di eseguire spark-shell su Windows 10, ma continuo a ricevere questo errore ogni volta che lo eseguo.

Ho usato entrambe le versioni più recenti e 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. (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.(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.(:9) at $iwC.(:18) at (:20) at .(:24) at .() at .(:7) at .() at $print() 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) … altri 56

  :10: error: not found: value sqlContext import sqlContext.implicits._ ^ :10: error: not found: value sqlContext import sqlContext.sql ^ 

Ho usato Spark 1.5.2 con Hadoop 2.6 e ho avuto problemi simili. Risolto facendo i seguenti passi:

  1. Scarica winutils.exe dal repository in una cartella locale, ad es. C:\hadoop\bin .

  2. Imposta HADOOP_HOME su C:\hadoop .

  3. Creare la c:\tmp\hive (usando Windows Explorer o qualsiasi altro strumento).

  4. Apri prompt dei comandi con diritti di amministratore.

  5. Esegui C:\hadoop\bin\winutils.exe chmod 777 /tmp/hive

Con ciò, ricevo ancora alcuni avvertimenti, ma nessun ERRORE e posso eseguire correttamente le applicazioni Spark.

Stavo affrontando un problema simile, l’ho risolto mettendo il winutil nella cartella bin. La Hadoop_home deve essere impostata come C: \ Winutils e winutil da posizionare in C: \ Winutils \ bin.

Windows 10 64 bit Winutils sono disponibili in https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin

Assicurarsi inoltre che la riga di comando abbia accesso amministrativo.

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

La mia ipotesi è che tu stia imbattendo in https://issues.apache.org/jira/browse/SPARK-10528 . Stavo vedendo lo stesso problema in esecuzione su Windows 7. Inizialmente ho ricevuto NullPointerException come hai fatto tu. Quando ho inserito winutils nella directory bin e ho impostato HADOOP_HOME in modo che punti alla directory Spark, ho ricevuto l’errore descritto nel problema JIRA.

O forse questo link qui sotto sarà più facile da seguire,

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

Fondamentalmente scarica e copia winutils.exe nella tua cartella spark \ bin. Riesegui la scintilla

Se non hai impostato il tuo / tmp / hive su uno stato scrivibile, ti preghiamo di farlo.

È necessario dare il permesso alla directory / tmp / hive per risolvere questa eccezione.

Spero che tu abbia già winutils.exe e impostato la variabile d’ambiente HADOOP_HOME . Quindi apri il prompt dei comandi ed esegui il seguente comando come amministratore:

Se winutils.exe è presente nella posizione D: \ winutils \ bin e \ tmp \ hive è anche nell’unità D:

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

Per maggiori dettagli, puoi fare riferimento ai seguenti link:

Problemi frequenti si sono verificati durante lo Spark Development
Come eseguire Apache Spark su Windows7 in modalità standalone

Per Python – Crea una SparkSession nel tuo python (questa sezione di configurazione è solo per Windows)

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

Copia winutils.exe e mantieni C: \ winutils \ bin ed esegui i comandi qui sotto

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

Esegui il prompt dei comandi in modalità ADMIN (Esegui come amministratore)

È ansible risolvere questo problema inserendo mysqlconnector jar nella cartella spark-1.6.0 / libs e riavviarlo nuovamente. Funziona.

La cosa importante è qui invece di lanciare una scintilla che dovresti fare

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

Spero che dovrebbe funzionare.

Il mio problema era avere altri .exe / Jars all’interno della cartella winutils / bin. Così ho eliminato tutti gli altri e sono rimasto con winutils.exe da solo. Stavo usando la scintilla 2.1.1

Il problema è stato risolto dopo aver installato la versione corretta di Java nel mio caso java 8 e l’impostazione delle variabili ambientali. Assicurati di eseguire winutils.exe per creare una directory temporanea come di seguito.

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

Sopra non dovrebbe restituire alcun errore. Usa java -version per verificare la versione di java che stai usando prima di invocare spark-shell.

In Windows, è necessario clonare “winutils”

 git clone https://github.com/steveloughran/winutils.git 

E

 set var HADOOP_HOME to DIR_CLONED\hadoop-{version} 

Ricordati di scegliere la versione del tuo hadoop.