web-dev-qa-db-fra.com

pyspark.sql.utils.IllegalArgumentException: "Erreur lors de l'instanciation de 'org.Apache.spark.sql.Hive.HiveSessionStateBuild dans Windows 10

J'ai installé spark 2.2 avec Winutils dans Windows 10.Quand je vais exécuter pyspark, je suis confronté à une exception

pyspark.sql.utils.IllegalArgumentException: "Error while instantiating 'org.Apache.spark.sql.Hive.HiveSessionStateBuilder'

J'ai déjà essayé l'autorisation 777 commandes dans le dossier tmp/Hive également, mais cela ne fonctionne pas pour l'instant

winutils.exe chmod -R 777 C:\tmp\Hive

après application, le problème reste le même. J'utilise pyspark 2.2 dans mes fenêtres 10 . Elle est spark-Shell env  enter image description here

Voici pyspark Shell  enter image description here

Aidez-moi à comprendre Merci

3
Kalyan

Port 9000?! Ce doit être quelque chose lié à Hadoop, car je ne me souviens pas du port pour Spark. Je recommanderais d’utiliser d’abord spark-Shell, ce qui éliminerait les "sauts" supplémentaires, c’est-à-dire que spark-Shell ne nécessite pas deux temps d’exécution pour Spark lui-même et Python.

Compte tenu de l'exception, je suis presque sûr que le problème est que vous avez certains Hive - ou une configuration liée à Hadoop quelque part et Spark l'utilise apparemment.

"Caused by" semble indiquer que 9000 est utilisé lors de la création de Spark SQL, c'est-à-dire lorsque le sous-système prenant en charge Hive est chargé.

Causé par: org.Apache.spark.sql.AnalysisException: Java.lang.RuntimeException: Java.net.ConnectException: appel de DESKTOP-SDNSD47/192.168.10.143 à 0.0.0.0:9000 en cas d'échec de la connexion: exception Java.net.ConnectException : Connexion rejetée

Veuillez examiner les variables d’environnement dans Windows 10 (en utilisant éventuellement la commande set sur la ligne de commande) et supprimez tout élément lié à Hadoop.

1
Jacek Laskowski

J'ai eu le même problème en utilisant la commande "pyspark" ainsi que "spark-shell" (pour scala) dans mon Mac OS avec Apache-spark 2.2. Sur la base de certaines recherches, je pense que c'est à cause de ma version 9.0.1 de JDK qui ne fonctionne pas bien avec Apache-Spark. Les deux erreurs ont été résolues en revenant de Java JDK 9 à JDK 8.

Peut-être que cela pourrait aider avec votre installation d'étincelles Windows aussi.

2
Chetan Shetty

Poster cette réponse pour la postérité. J'ai fait face à la même erreur ... La solution que j'ai résolue est d'abord d'essayer spark-Shell au lieu de pyspark. Le message d'erreur était plus direct.

Cela a donné une meilleure idée. il y avait une erreur d'accès S3 . Suivant; J'ai vérifié le profil rôle/instance ec2 pour cette instance; il dispose d'un accès administrateur S3.

Ensuite, j'ai fait un grep pour s3: // dans tous les fichiers de configuration sous/etc/directory .

<!-- URI of NN. Fully qualified. No IP.--> <name>fs.defaultFS</name> <value>s3://arvind-glue-temp/</value> </property>

Puis je me suis souvenu. J'avais retiré HDFS en tant que système de fichiers par défaut et l'avais réglé sur S3. J'avais créé l'instance ec2 à partir d'une AMI antérieure et j'avais oublié de mettre à jour le compartiment S3 correspondant au compte le plus récent.

Une fois que j’ai mis à jour le compartiment s3 avec celui qui est accessible par le profil d’instance ec2 actuel; ça a marché.

1
AravindR

Pour utiliser Spark sous Windows, vous pouvez suivre this guide.

REMARQUE: Assurez-vous que votre adresse IP a été correctement résolue par rapport à votre nom d'hôte et à localhost. Le manque de résolution de localhost a déjà causé des problèmes pour nous.

En outre, vous devez fournir la trace complète de la pile, car elle permet de déboguer rapidement le problème et d’éviter les conjectures. 

Faites-moi savoir si cela aide. À votre santé.

0
Chitral Verma

Essaye ça . Cela a fonctionné pour moi! Ouvrez une invite de commande en mode administrateur, puis exécutez la commande 'pyspark'. Cela devrait vous aider à ouvrir une session d'allumage sans erreurs.

0
Nilav Baran Ghosh

Le fichier Hive-site.xml doit figurer dans le répertoire de configuration de l'étincelle. Changer le port de 9000 à 9083 a résolu le problème pour moi.

Veuillez vous assurer que la propriété est mise à jour dans les deux fichiers Hive-site.xml qui seraient placés dans le répertoire Hive config et spark config .

<property>
    <name>Hive.metastore.uris</name>
    <value>thrift://localhost:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>   </property>

Pour moi à Ubuntu, les emplacements pour Hive-site.xml sont:

/ home/hadoop/Hive/conf /

et

/ home/hadoop/spark/conf /

0
Arun

J'ai aussi rencontré l'erreur dans Ubuntu 16.04:

raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.IllegalArgumentException: u"Error while instantiating 'org.Apache.spark.sql.Hive.HiveSessionStateBuilder'

c'est parce que j'ai déjà lancé ./bin/spark-Shell

Alors, tuez ce spark-Shell, et relancez ./bin/pyspark

0
Jin Zhong

J'ai également rencontré l'erreur dans MacOS10 et je l'ai résolu en utilisant Java8 au lieu de Java9.

Lorsque Java 9 est la version par défaut résolue dans l'environnement, pyspark renvoie l'erreur ci-dessous et vous verrez que le nom 'xx' n'est pas une erreur définie lors d'une tentative d'accès à sc, spark, etc. depuis Shell/Jupyter.

plus de détails vous pouvez voir ce lien

0
wangcs