pythonsparkpickle_python – Pyspark py4j PickleException:“构造ClassDict的预期零参数”

在尝试使用Pyspark处理MatrixEntry的RDD时遇到PickleException,问题出在ClassDict构造时预期零参数。解决方案涉及到正确处理类的__reduce__方法,确保在pickle序列化和反序列化过程中能正确构造ClassDict。
摘要由CSDN通过智能技术生成

这个问题针对熟悉py4j的人 – 可以帮助解决酸洗错误.我正在尝试向pyspark添加一个方法

PythonMLLibAPI,它接受一个namedtuple的RDD,做一些工作,并以RDD的形式返回一个结果.

此方法是在PYthonMLLibAPI.trainALSModel()方法之后建模的,其类似的现有相关部分是:

def trainALSModel(

ratingsJRDD: JavaRDD[Rating],

.. )

用于建模新代码的现有python Rating类是:

class Rating(namedtuple("Rating", ["user", "product", "rating"])):

def __reduce__(self):

return Rating, (int(self.user), int(self.product), float(self.rating))

这是尝试所以这里是相关的类:

新的python类pyspark.mllib.clustering.MatrixEntry:

from collections import namedtuple

class MatrixEntry(namedtuple("MatrixEntry", ["x","y","weight"])):

def __reduce__(self):

return MatrixEntry, (long(self.x), long(self.y), float(self.weight))

新方法foobarRDD在PythonMLLibAPI中:

def foobarRdd(

dat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值