Come risolvere l'errore "TypeError: è necessario un numero intero (ottenuto i byte di tipo)" quando si tenta di eseguire pyspark dopo l'installazione di spark 2.4.4


16

Ho installato OpenJDK 13.0.1 e python 3.8 e spark 2.4.4. Le istruzioni per testare l'installazione devono essere eseguite. \ Bin \ pyspark dalla radice dell'installazione spark. Non sono sicuro di aver perso un passaggio nell'installazione di Spark, come l'impostazione di alcune variabili di ambiente, ma non riesco a trovare ulteriori istruzioni dettagliate.

Posso eseguire l'interprete Python sulla mia macchina, quindi sono sicuro che sia installato correttamente e che esegua "java -version" mi dia la risposta prevista, quindi non penso che il problema sia con nessuno di questi.

Ottengo una traccia dello stack di errori da 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)

Risposte:


44

Questo succede perché stai usando Python 3.8. L'ultima versione pip di pyspark (pyspark 2.4.4 al momento della stesura) non supporta python 3.8. Esegui il downgrade a Python 3.7 per ora e dovresti andare bene.


Grazie, è fantastico!
Chris,

questo non ha funzionato per me, declassato a 3.7.6
user2331566

1
Posso confermare che pyspark 2.4.4 funziona con python3.7.5
mork il

Posso confermare che un nuovo ambiente conda con Python 3.7.0 funziona! Grazie.
J. Offenberg,

Confermando che 3.7.7 ha funzionato
kolistivra

1

Come soluzione alternativa sporca si può sostituire la _cell_set_template_codecon l'implementazione solo per Python3 suggerita da docstring della _make_cell_set_template_codefunzione:

Notes
-----
In Python 3, we could use an easier function:

.. code-block:: python

   def f():
       cell = None

       def _stub(value):
           nonlocal cell
           cell = value

       return _stub

    _cell_set_template_code = f()

Ecco una patch per spark v2.4.5: https://gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622

Applicalo per:

git apply <(curl https://gist.githubusercontent.com/ei-grad/d311d0f34b60ebef96841a3a39103622/raw)

Questo risolve il problema con ./bin/pyspark, ma ./bin/spark-submit utilizza pyspark.zip in bundle con la propria copia di cloudpickle.py. E se fosse stato risolto lì, allora non avrebbe funzionato, fallendo con lo stesso errore mentre stacchiando qualche oggetto pyspark/serializers.py.

Ma sembra che il supporto di Python 3.8 sia già arrivato a spark v3.0.0-preview2, quindi si può provare. Oppure, attenersi a Python 3.7, come suggerisce la risposta accettata.


0

Prova a installare l'ultima versione di pyinstaller che può essere compatibile con python 3.8 usando questo comando:

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz

riferimento :
https://github.com/pyinstaller/pyinstaller/issues/4265


1
Ho fatto questo e pysparkcontinua a dare lo stesso errore
Javavba il

Anch'io. Sembra che questo sia un problema diverso, anche se è lo stesso messaggio di errore. Il problema di OP si verifica in pyspark\cloudpickle.py. Il problema con PyInstaller si verifica in PyInstaller\building\utils.py.
Steven
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.