web-dev-qa-db-de.com

pyspark-Fehler ist beim Initialisieren von SparkContext im jvm-Fehler nicht vorhanden

Ich benutze Spark über Emr und schreibe ein Pyspark-Skript Beim Versuch bekomme ich eine Fehlermeldung 

from pyspark import SparkContext
sc = SparkContext()

das ist der fehler 

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

Ich habe this antwortet, dass ich Sparkcontext importieren muss, aber das funktioniert auch nicht.

5
thebeancounter

PySpark hat kürzlich 2.4.0 veröffentlicht, aber es gibt keine stabile Veröffentlichung für Spark, die mit dieser neuen Version übereinstimmt. Versuchen Sie, auf pyspark 2.3.2 herunterzusteigen, dies hat es für mich behoben

Bearbeiten: Um klarer zu sein, muss Ihre PySpark-Version mit der heruntergeladenen Apache Spark-Version identisch sein. Andernfalls können Kompatibilitätsprobleme auftreten

Überprüfen Sie die Version von pyspark mit 

pip einfrieren

14
svw

Ich hatte gerade eine neue Pyspark-Installation auf meinem Windows-Gerät und hatte genau das gleiche Problem. Was scheint geholfen zu haben, ist folgendes:

Gehen Sie zu den Systemumgebungsvariablen und fügen Sie PYTHONPATH mit dem folgenden Wert hinzu: %SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-<version>-src.Zip:%PYTHONPATH%, überprüfen Sie einfach, welche Version von py4j Sie in Ihrem Ordner spark/python/lib haben.

Der Grund, warum ich denke, dass dies funktioniert, liegt darin, dass bei der Installation von pyspark mit conda auch eine py4j-Version heruntergeladen wurde, die möglicherweise nicht mit der bestimmten Version von spark kompatibel ist. Es scheint also, dass sie eine eigene Version enthält. 

2
mugurkt

Mit den folgenden Schritten wurde mein Problem behoben: - Downgrade auf 2.3.2 - Hinzufügen von PYTHONPATH als Systemumgebungsvariable mit dem Wert %SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-<version>-src.Zip:%PYTHONPATH%Hinweis: Verwenden Sie die richtige Version im angegebenen Wert oben nicht genau kopieren.

1
Babu Reddy

Verwenden Sie SparkContext (). Stop () am Ende des Programms, um diese Situation zu beenden.

1
abhishek kumar

Anstatt die Umgebungsvariablen zu bearbeiten, können Sie nur sicherstellen, dass die Python-Umgebung (die mit pyspark) auch die gleiche py4j-Version hat wie die ZIP-Datei im\python\lib\-Verzeichnis Ihres Spark-Ordners. Beispiel: d:\Programme\Spark\python\lib\py4j-0.10.7-src.Zip auf meinem System für Spark 2.3.2. Es ist die py4j-Version, die als Teil der Spark-Archivdatei ausgeliefert wird.

0
Pawel Kranzberg

Nur um es einfach zu machen, es geht um python und Java) konnte nicht sprechen, weil das Medium, das zum Sprechen gebracht werden muss (py4j), anders ist, das war's Ich hatte das gleiche Problem und all die obigen Antworten sind gültig und funktionieren, wenn Sie sie richtig verwenden. Entweder definieren Sie eine Systemvariable, um beiden mitzuteilen, welche py4j sie verwenden sollen, oder Sie können eine Deinstallation und Installation durchführen, damit sie zurückkehren Jeder wird auf derselben Seite sein.

0
viv_tony

Versuchen Sie, dies am Anfang der Datei hinzuzufügen:

import findspark
findspark.init()

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

0
fstang