Ich habe OpenJDK 13.0.1 und Python 3.8 installiert und Spark 2.4.4. Anweisungen zum Testen der Installation müssen im Stammverzeichnis der Spark-Installation ausgeführt werden. \ Bin \ pyspark. Ich bin mir nicht sicher, ob ich einen Schritt in der Funkeninstallation verpasst habe, z. B. das Festlegen einer Umgebungsvariablen, aber ich kann keine weiteren detaillierten Anweisungen finden.
Ich kann den Python-Interpreter auf meinem Computer ausführen, daher bin ich sicher, dass er korrekt installiert ist und die Ausführung von "Java-Version" die erwartete Antwort liefert. Ich glaube also nicht, dass das Problem bei beiden liegt.
Ich erhalte eine Stapelspur von Fehlern von cloudpickly.py:
Traceback (most recent call last):
File "C:\software\spark-2.4.4-bin-hadoop2.7\bin\..\python\pyspark\shell.py", line 31, in <module>
from pyspark import SparkConf
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\__init__.py", line 51, in <module>
from pyspark.context import SparkContext
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\context.py", line 31, in <module>
from pyspark import accumulators
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\accumulators.py", line 97, in <module>
from pyspark.serializers import read_int, PickleSerializer
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\serializers.py", line 71, in <module>
from pyspark import cloudpickle
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\cloudpickle.py", line 145, in <module>
_cell_set_template_code = _make_cell_set_template_code()
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\cloudpickle.py", line 126, in _make_cell_set_template_code
return types.CodeType(
TypeError: an integer is required (got type bytes)
quelle
Als schmutzige
_cell_set_template_code
Problemumgehung kann man die durch die Python3-Implementierung ersetzen, die von docstring of function vorgeschlagen wird_make_cell_set_template_code
:Hier ist ein Patch für spark v2.4.5: https://gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622
Wenden Sie es an durch:
Dies behebt das Problem mit ./bin/pyspark, aber ./bin/spark-submit verwendet die mitgelieferte Datei pyspark.zip mit einer eigenen Kopie von cloudpickle.py. Und wenn es dort behoben würde, würde es immer noch nicht funktionieren und mit demselben Fehler fehlschlagen, während ein Objekt entfernt wird
pyspark/serializers.py
.Aber es sieht so aus, als ob die Unterstützung für Python 3.8 bereits eingetroffen ist, um v3.0.0-Preview2 zu aktivieren, sodass man es ausprobieren kann. Oder bleiben Sie bei Python 3.7, wie die akzeptierte Antwort nahelegt.
quelle
Versuchen Sie mit diesem Befehl, die neueste Version von pyinstaller zu installieren, die mit Python 3.8 kompatibel ist :
Referenz :
https://github.com/pyinstaller/pyinstaller/issues/4265
quelle
pyspark
gebe immer noch den gleichen Fehlerpyspark\cloudpickle.py
. Das PyInstaller-Problem tritt in aufPyInstaller\building\utils.py
.