Python3使用pyspark时报错PicklingError

在使用pyspark时遇到pickle序列化错误,原因是Python版本过高(3.11)。通过降级到3.10.9并从阿里云镜像仓库下载,修改PYSPARK_PYTHON环境变量,成功解决错误并执行了map函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用pyspark的时候,需要使用RDD中的map成员方法
遇到了如下问题:

_pickle.PicklingError: Could not serialize object: IndexError: tuple index out of range

代码如下:

from pyspark import SparkConf, SparkContext

import os
os.environ["PYSPARK_PYTHON"] = "/Users/week/PycharmProjects/PythonProject/venv/bin/python3"

conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# 准备一个RDD
rdd = sc.parallelize([1, 2, 3, 4, 5])


# 通过map方法将数据全部乘以10
def func(data):
    return data * 10


rdd2 = rdd.map(func)
print(rdd2.collect())

报错信息如下:

在这里插入图片描述

错误原因:

Python版本使用的是3.11过高导致,于是更换了3.10.9
官网下载太慢,这里在阿里云镜像仓库进行下载,3秒下载完成
在这里插入图片描述
附上仓库地址:
https://registry.npmmirror.com/binary.html?path=python/3.10.9/

修改代码里的python解释器环境

os.environ["PYSPARK_PYTHON"] = "/Library/Frameworks/Python.framework/Versions/3.10/bin/python3"

控制台输出成功,错误解决
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值