web-dev-qa-db-fra.com

l'erreur pyspark n'existe pas dans l'erreur JVM lors de l'initialisation de SparkContext

J'utilise spark over emr et écris un script pyspark, .__ 

from pyspark import SparkContext
sc = SparkContext()

c'est l'erreur 

File "pyex.py", line 5, in <module>
    sc = SparkContext()   File "/usr/local/lib/python3.4/site-packages/pyspark/context.py", line 118, in __init__
    conf, jsc, profiler_cls)   File "/usr/local/lib/python3.4/site-packages/pyspark/context.py", line 195, in _do_init
    self._encryption_enabled = self._jvm.PythonUtils.getEncryptionEnabled(self._jsc)   File "/usr/local/lib/python3.4/site-packages/py4j/Java_gateway.py", line 1487, in __getattr__
    "{0}.{1} does not exist in the JVM".format(self._fqn, name)) py4j.protocol.Py4JError: org.Apache.spark.api.python.PythonUtils.getEncryptionEnabled does not exist in the JVM

J'ai trouvé ceci réponse indiquant que je dois importer sparkcontext mais que cela ne fonctionne pas également.

5
thebeancounter

PySpark a récemment publié la version 2.4.0, mais il n’existe pas de version stable pour spark coïncidant avec cette nouvelle version. Essayez de passer à pyspark 2.3.2, cela a résolu le problème pour moi

Modifier: pour être plus clair, votre version de PySpark doit être identique à la version téléchargée d’Apache Spark, sinon vous pouvez rencontrer des problèmes de compatibilité.

Vérifiez la version de pyspark en utilisant 

pip gel

14
svw

Je viens d'avoir une nouvelle installation de pyspark sur mon appareil Windows et j'avais exactement le même problème. Ce qui semble avoir aidé est le suivant:

Accédez à vos variables d'environnement système et ajoutez-y PYTHONPATH avec la valeur suivante: %SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-<version>-src.Zip:%PYTHONPATH%, vérifiez simplement quelle version de py4j se trouve dans votre dossier spark/python/lib.

La raison pour laquelle je pense que cela fonctionne est que parce que quand j'ai installé pyspark avec conda, il a également téléchargé une version de py4j qui peut ne pas être compatible avec la version spécifique de spark. 

2
mugurkt

Utilisez SparkContext (). Stop () à la fin du programme pour arrêter cette situation.

1
abhishek kumar

Au lieu de modifier les variables d'environnement, vous pouvez simplement vous assurer que l'environnement Python (celui avec pyspark) a également la même version py4j que le fichier Zip présent dans le répertoire\python\lib\du dossier Spark. Par exemple, d:\Programmes\Spark\python\lib\py4j-0.10.7-src.Zip sur mon système, pour Spark 2.3.2. C'est la version py4j livrée avec le fichier d'archive Spark.

0
Pawel Kranzberg

Essayez d’ajouter ceci en haut du fichier:

import findspark
findspark.init()

Voir https://github.com/minrk/findspark

0
fstang