web-dev-qa-db-fra.com

Obtention de NullPointerException lors de l'exécution de Spark Code dans Zeppelin 0.7.1

J'ai installé Zeppelin 0.7.1. Lorsque j'essaie d'exécuter le programme spark Example (disponible avec le bloc-notes Zeppelin Tutorial), le message d'erreur suivant s'affiche:

Java.lang.NullPointerException
    at org.Apache.zeppelin.spark.Utils.invokeMethod(Utils.Java:38)
    at org.Apache.zeppelin.spark.Utils.invokeMethod(Utils.Java:33)
    at org.Apache.zeppelin.spark.SparkInterpreter.createSparkContext_2(SparkInterpreter.Java:391)
    at org.Apache.zeppelin.spark.SparkInterpreter.createSparkContext(SparkInterpreter.Java:380)
    at org.Apache.zeppelin.spark.SparkInterpreter.getSparkContext(SparkInterpreter.Java:146)
    at org.Apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.Java:828)
    at org.Apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.Java:70)
    at org.Apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.Java:483)
    at org.Apache.zeppelin.scheduler.Job.run(Job.Java:175)
    at org.Apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.Java:139)
    at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
    at Java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.Java:180)
    at Java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.Java:293)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
    at Java.lang.Thread.run(Thread.Java:745)

J'ai également configuré le fichier de configuration (zeppelin-env.sh) pour qu'il pointe vers mon répertoire d'installation Spark et de configuration Hadoop.

export SPARK_HOME="/${homedir}/sk"
export HADOOP_CONF_DIR="/${homedir}/hp/etc/hadoop"

La version de Spark que j'utilise est la version 2.1.0 et Hadoop est la version 2.7.3.

J'utilise également la configuration par défaut de l'interpréteur Spark (Spark doit donc être exécuté dans Local mode).

Est-ce que j'ai râté quelque chose?

PS: Je suis capable de me connecter au terminal à l’aide de spark-Shell

13
Raj

Je viens tout juste de trouver une solution à ce problème pour Zeppelin-0.7.2: 

La cause première est: Spark essayant de configurer le contexte Hive, mais les services hdfs n'est pas en cours d'exécution, c'est pourquoi HiveContext devient null et renvoie null exception de pointeur.

Solution:
1. Configurez Saprk Home [facultatif] et HDFS.
2. Exécuter le service HDFS
3. Redémarrez le serveur Zeppelin
OU
1. Allez dans les paramètres de l’interprète de Zeppelin.
2. Sélectionnez Spark Interpreter
3. zeppelin.spark.useHiveContext = false 

12
Rajeev Rathor

Enfin, je suis capable de trouver la raison. Lorsque j'ai vérifié les journaux dans le répertoire ZL_HOME/logs, découvrez qu'il semble s'agir de l'erreur de liaison du pilote Spark. Ajout de la propriété suivante dans Spark Interpreter Binding et fonctionne bien maintenant ...

 enter image description here

PS: On dirait que ce problème se pose principalement si vous vous connectez au VPN ... et que je me connecte au VPN

8
Raj

Avez-vous défini le bon SPARK_HOME? Je me demandais simplement quelle sk est dans votre export SPARK_HOME="/${homedir}/sk"

(Je voulais juste commenter ci-dessous votre question mais je n'ai pas pu, à cause de mon manque de réputation ????)

2
Ahyoung Ryu

J'obtenais exactement la même exception pour la version 0.7.2 de zepelline sous Windows 7. Je devais apporter plusieurs modifications à la configuration pour que cela fonctionne.

Commencez par renommer le fichier zeppelin-env.cmd.template en zeppelin-env.cmd. Ajoutez la variable env pour PYTHONPATH. Le fichier peut être situé dans le dossier% ZEPPELIN_HOME%/conf.

set PYTHONPATH=%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-0.10.4-src.Zip;%SPARK_HOME%\python\lib\pyspark.Zip

Ouvrez le fichier zeppelin.cmd à partir de l'emplacement% ZEPPELIN_HOME%/bin pour ajouter un% SPARK_HOME% et% ZEPPELIN_HOME%. Ce seront les premières lignes de l'instruction. La valeur de% SPARK_HOME% a été configurée comme étant vide car j'utilisais la bibliothèque d'étincelles intégrée. J'ai ajouté% ZEPPELIN_HOME% pour m'assurer que cet env est configuré à l'étape initiale du démarrage.

set SPARK_HOME=
set ZEPPELIN_HOME=<PATH to zeppelin installed folder>

Ensuite, nous devrons copier tous les fichiers jar et pySpark du dossier% spark_home%/dans le dossier zeppeline.

cp %SPARK_HOME%/jar/*.jar %ZEPPELIN_HOME%/interpreter/spark
cp %SPARK_HOME%/python/pyspark %ZEPPELIN_HOME%/interpreter/spark/pyspark

Je n'ai pas démarré le interpreter.cmd en accédant au cahier. Cela causait l'exception nullpointer. J'ai ouvert deux commandes Invite et dans une cmd, j'ai lancé zeppeline.cmd et dans l'autre interpreter.cmd. 

Nous devons spécifier deux ports d'entrée supplémentaires et le chemin d'accès à zeppeline local_repo en ligne de commande. Vous pouvez obtenir le chemin d'accès à local_repo dans la page de l'interprète spark de zeppeline. Utilisez exactement le même chemin pour démarrer interpreter.cmd.

interpreter.cmd  -d %ZEPPELIN_HOME%\interpreter\spark\ -p 5050  -l %ZEPPELIN_HOME%\local-repo\2D64VMYZE

L'hôte et le port doivent être spécifiés dans la page d'interprétation de l'étincelle dans zepelline ui. Sélectionnez le processus de connexion à externe

Host : localhost
PORT : 5050

Une fois que toutes ces configurations sont créées, vous pouvez enregistrer et redémarrer l’interpréteur d’étincelle à l’étape suivante. Créez un nouveau cahier et tapez sc.version. Il publiera la version spark. Zeppeline 0.7.2 ne prend pas en charge l'étincelle 2.2.1

0
Soumyajit Swain
    enterCaused by: Java.net.ConnectException: Connection refused (Connection refused)
        at Java.net.PlainSocketImpl.socketConnect(Native Method)
        at Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:350)
        at Java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.Java:206)
        at Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:188)
        at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392)
        at Java.net.Socket.connect(Socket.Java:589)
        at org.Apache.thrift.transport.TSocket.open(TSocket.Java:182)
        ... 74 more
)
        at org.Apache.hadoop.Hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.Java:466)
        at org.Apache.hadoop.Hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.Java:236)
        at org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.Java:74)
        ... 71 more
 INFO [2017-11-20 17:51:55,288] ({pool-2-thread-4} SparkInterpreter.Java[createSparkSession]:369) - Created Spark session with Hive support
ERROR [2017-11-20 17:51:55,290] ({pool-2-thread-4} Job.Java[run]:181) - Job failed code here

Il semble que le service Hive Metastore n’ait pas démarré. Vous pouvez démarrer le service Metastore et réessayer.

Hive --service metastore
0
user2324770

Sur AWS EMR, le problème était la mémoire. J'ai dû définir manuellement une valeur inférieure pour spark.executor.memory dans l'Interpeter for Spark à l'aide de l'interface utilisateur de Zeppelin. 

La valeur varie en fonction de la taille de votre instance. Le mieux est de vérifier les journaux situés dans le dossier /mnt/var/log/zeppelin/.

Dans mon cas, l'erreur sous-jacente était la suivante:

Error initializing SparkContext.
Java.lang.IllegalArgumentException: Required executor memory (6144+614 MB) is above the max threshold (6144 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.

Cela m'a aidé à comprendre pourquoi il échouait et ce que je pouvais faire pour le réparer.

Remarque:

Ceci est dû au fait que je commençais une instance avec HBase qui limite la mémoire disponible. Voir les valeurs par défaut pour la taille d'instance ici .

0
Dusan Vasiljevic

Vérifiez si votre NameNode est passé en mode sans échec.

vérifier avec la syntaxe ci-dessous:

Sudo -u hdfs hdfs dfsadmin -safemode get

pour quitter le mode sans échec, utilisez la commande ci-dessous:

Sudo -u hdfs hdfs dfsadmin -safemode leave
0
Vishwajeet Pol

a résolu ce problème en ajoutant cette ligne en haut du fichier common.sh dans dir zeppelin-0.6.1 puis bin 

ouvrez common.sh et ajoutez une commande en haut du jeu de fichiers:

unset CLASSPATH

0
Mmagdy