spark 2.4.4를 설치 한 후 pyspark를 실행하려고 할 때 'TypeError : integer is required (got type bytes)'오류 수정 방법


16

OpenJDK 13.0.1 및 python 3.8 및 spark 2.4.4를 설치했습니다. 설치를 테스트하기위한 지시 사항은 spark 설치 루트에서. \ bin \ pyspark를 실행하는 것입니다. 환경 변수 설정과 같은 스파크 설치 단계를 놓쳤는 지 확실하지 않지만 자세한 지침을 찾을 수 없습니다.

내 컴퓨터에서 파이썬 인터프리터를 실행할 수 있으므로 올바르게 설치되어 있고 "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)

답변:


44

파이썬 3.8을 사용하고 있기 때문에 이런 일이 발생합니다. pyspark의 최신 pip 릴리스 (작성 시점에 pyspark 2.4.4)는 python 3.8을 지원하지 않습니다. 지금은 파이썬 3.7로 다운 그레이드하면 괜찮을 것입니다.


고마워요, 대단합니다!
Chris

이것은 나를 위해 작동하지 않았다 3.7.6으로 다운 그레이드
user2331566

1
pyspark 2.4.4가 python3.7.5에서 작동하고 있음을 확인할 수 있습니다.
mork

python 3.7.0을 사용하는 신선한 콘다 환경이 작동하는지 확인할 수 있습니다! 감사.
J. Offenberg

3.7.7이 작동
하는지

1

더러운 해결 방법 으로 docstring 함수에서 제안한_cell_set_template_code Python3 전용 구현으로를 대체 할 수 있습니다 ._make_cell_set_template_code

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()

spark v2.4.5 패치는 다음과 같습니다. https://gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622

다음에 의해 적용하십시오 :

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

이것은 ./bin/pyspark의 문제점을 수정하지만 ./bin/spark-submit은 고유 한 cloudpickle.py 사본과 함께 번들로 제공되는 pyspark.zip을 사용합니다. 그리고 거기에서 수정되면 여전히 작동하지 않고에서 일부 객체를 선택 해제하는 동안 동일한 오류로 실패합니다 pyspark/serializers.py.

그러나 Python 3.8 지원이 이미 v3.0.0-preview2에 도달 한 것으로 보이므로 시도해 볼 수 있습니다. 또는 받아 들인 대답에서 알 수 있듯이 Python 3.7을 고수하십시오.


0

다음 명령을 사용하여 python 3.8 과 호환 가능한 최신 버전의 pyinstaller 를 설치하십시오 .

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

참조 :
https://github.com/pyinstaller/pyinstaller/issues/4265


1
나는 이런 짓을하고 pyspark여전히 같은 오류 준다
javadba을

여기도 마찬가지입니다. 동일한 오류 메시지 인 경우에도 다른 문제인 것 같습니다. OP의 문제는에서 발생합니다 pyspark\cloudpickle.py. PyInstaller 문제는에서 발생합니다 PyInstaller\building\utils.py.
스티븐
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.