J'ai installé OpenJDK 13.0.1 et python 3.8 et spark 2.4.4. Les instructions pour tester l'installation consistent à exécuter. \ Bin \ pyspark à partir de la racine de l'installation spark. Je ne sais pas si j'ai raté une étape de l'installation de spark, comme la définition d'une variable d'environnement, mais je ne trouve aucune autre instruction détaillée.
Je peux exécuter l'interpréteur python sur ma machine, donc je suis sûr qu'il est installé correctement et que l'exécution de "java -version" me donne la réponse attendue, donc je ne pense pas que le problème soit avec l'un ou l'autre.
J'obtiens une trace de la pile des erreurs de 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)
la source
Comme solution de contournement on peut remplacer le
_cell_set_template_code
par l'implémentation Python3 uniquement suggérée par docstring de_make_cell_set_template_code
fonction:Voici un patch pour spark v2.4.5: https://gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622
Appliquez-le par:
Cela résout le problème avec ./bin/pyspark, mais ./bin/spark-submit utilise pyspark.zip fourni avec sa propre copie de cloudpickle.py. Et si cela devait être corrigé là, cela ne fonctionnerait toujours pas, échouant avec la même erreur tout en décochant un objet
pyspark/serializers.py
.Mais il semble que le support de Python 3.8 soit déjà arrivé pour déclencher v3.0.0-preview2, donc on peut l'essayer. Ou, respectez Python 3.7, comme le suggère la réponse acceptée.
la source
Essayez d'installer la dernière version de pyinstaller qui peut être compatible avec python 3.8 en utilisant cette commande:
référence :
https://github.com/pyinstaller/pyinstaller/issues/4265
la source
pyspark
donne toujours la même erreurpyspark\cloudpickle.py
. Le problème PyInstaller se produit dansPyInstaller\building\utils.py
.