Я установил OpenJDK 13.0.1 и python 3.8 и спарк 2.4.4. Инструкция по проверке установки заключается в запуске. \ Bin \ pyspark из корня установки spark. Я не уверен, что пропустил какой-то шаг в установке spark, например, установил какую-то переменную окружения, но не могу найти более подробных инструкций.
Я могу запустить интерпретатор python на моей машине, так что я уверен, что он установлен правильно, и запуск «java -version» дает мне ожидаемый ответ, поэтому я не думаю, что проблема с любым из них.
Я получаю трассировку стека ошибок из 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)
источник
В качестве грязного обходного пути можно заменить
_cell_set_template_code
реализацию только на Python3, предложенную строкой_make_cell_set_template_code
функции:Вот патч для spark v2.4.5: https://gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622
Примените это:
Это устраняет проблему с ./bin/pyspark, но ./bin/spark-submit использует пакет pyspark.zip с собственной копией cloudpickle.py. И если он будет там исправлен, то он все равно не будет работать, если не получится с той же ошибкой при снятии какого-либо объекта
pyspark/serializers.py
.Но похоже, что поддержка Python 3.8 уже пришла в spark v3.0.0-preview2, так что можно попробовать. Или придерживайтесь Python 3.7, как предполагает принятый ответ.
источник
Попробуйте установить последнюю версию pyinstaller, которая может быть совместима с python 3.8, с помощью этой команды:
ссылка :
https://github.com/pyinstaller/pyinstaller/issues/4265
источник
pyspark
до сих пор выдает ту же ошибкуpyspark\cloudpickle.py
. Проблема PyInstaller происходит вPyInstaller\building\utils.py
.