在Python 3.8中导入pyspark时出现“TypeError:需要整数(得到类型字节)”错误。

11
  1. 创建了一个conda环境:
conda create -y -n py38 python=3.8
conda activate py38
  1. 从Pip安装Spark:
pip install pyspark
# Successfully installed py4j-0.10.7 pyspark-2.4.5
  1. 尝试导入pyspark:
python -c "import pyspark"

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/dmitrii_deriabin/anaconda3/envs/py38/lib/python3.8/site-packages/pyspark/__init__.py", line 51, in <module>
    from pyspark.context import SparkContext
  File "/Users/dmitrii_deriabin/anaconda3/envs/py38/lib/python3.8/site-packages/pyspark/context.py", line 31, in <module>
    from pyspark import accumulators
  File "/Users/dmitrii_deriabin/anaconda3/envs/py38/lib/python3.8/site-packages/pyspark/accumulators.py", line 97, in <module>
    from pyspark.serializers import read_int, PickleSerializer
  File "/Users/dmitrii_deriabin/anaconda3/envs/py38/lib/python3.8/site-packages/pyspark/serializers.py", line 72, in <module>
    from pyspark import cloudpickle
  File "/Users/dmitrii_deriabin/anaconda3/envs/py38/lib/python3.8/site-packages/pyspark/cloudpickle.py", line 145, in <module>
    _cell_set_template_code = _make_cell_set_template_code()
  File "/Users/dmitrii_deriabin/anaconda3/envs/py38/lib/python3.8/site-packages/pyspark/cloudpickle.py", line 126, in _make_cell_set_template_code
    return types.CodeType(
TypeError: an integer is required (got type bytes)

似乎Pyspark自带的cloudpickle包在Python 3.8上存在一些问题,但现在(至少从1.3.0版本开始)在pip版本中已经解决,但是Pyspark版本仍然有问题。有人遇到了相同的问题/解决这个问题的方法吗?

3
在 3.0.0 版本之前,Spark 不支持 Python 3.8。 - 10465355
2
@cricket_007 请查看此问题 - blackbishop
1
@Dmitry 为什么不呢?看起来你正在创建自己的环境,所以如果你想使用pyspark,你就必须这样做。 - OneCricketeer
1
@cricket_007 我们的库需要支持Python 3.8,并且它还依赖于Pyspark。Python 3.7已经得到支持 :) 因此,目前看来3.8不是一个选项(至少在Spark 3.0发布之前)。 - Dmitry Deryabin
显示剩余3条评论
3个回答

8

你必须将Python版本从3.8降级到3.7,因为Pyspark不支持Python的这个版本。


有没有办法将AWS EMR集群降级到3.7版本?相关文档似乎只是指向Python 3.4->3.6的过渡... - Megan
可以确认这也是我的问题,Python 3.8 失败了,Python 3.7.8 可以工作。 - Paul Watson
无法与Python 3.8一起使用,需要安装3.7版本。 - brajesh jaishwal
它在Python3.9上无法工作,但在Python3.7上可以。 - Kubra Altun

1

我刚刚确认(2020年11月4日)将pyspark升级到3.0.1可以解决这个问题。


解决了我在IBM Watson Studio遇到的问题。谢谢。 - Khubaib Ahmad

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接