Instalei o OpenJDK 13.0.1 e python 3.8 e spark 2.4.4. As instruções para testar a instalação são executar. \ Bin \ pyspark a partir da raiz da instalação do spark. Não tenho certeza se perdi uma etapa na instalação do spark, como definir alguma variável de ambiente, mas não consigo encontrar mais instruções detalhadas.
Posso executar o interpretador python na minha máquina, por isso estou confiante de que ele está instalado corretamente e a execução de "java -version" me dá a resposta esperada; portanto, não acho que o problema ocorra com nenhum deles.
Eu recebo um rastreamento de pilha dos erros do 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)
fonte
Como solução alternativa suja, pode-se substituir a
_cell_set_template_code
implementação somente em Python3 sugerida pela documentação da_make_cell_set_template_code
função:Aqui está um patch para o spark v2.4.5: https://gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622
Aplique por:
Isso corrige o problema com ./bin/pyspark, mas ./bin/spark-submit usa o pacote pyspark.zip com sua própria cópia do cloudpickle.py. E se fosse corrigido lá, ainda assim não funcionaria, falhando com o mesmo erro ao retirar algum objeto
pyspark/serializers.py
.Mas parece que o suporte ao Python 3.8 já chegou ao Spark v3.0.0-preview2, para que você possa experimentá-lo. Ou siga o Python 3.7, como sugere a resposta aceita.
fonte
Tente instalar a versão mais recente do pyinstaller que pode ser compatível com o python 3.8 usando este comando:
referência :
https://github.com/pyinstaller/pyinstaller/issues/4265
fonte
pyspark
ainda dá o mesmo erropyspark\cloudpickle.py
. O problema do PyInstaller ocorre emPyInstaller\building\utils.py
.