pyspark rdd.zip valueerror:无法使用不同数量的成对项反序列化rdd

bn31dyow  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(356)

我使用的是spark 1.6.0,我有一个pyspark.mllib.tree.randomforestmodel用于预测任务。我的数据格式如下:

[LabeledPoint(id1,feature),
 LabeledPoint(id2,feature),
...]

我的密码是

rfmodel = RandomForestModel.load(sc,modelpath)

我想要的是把ID和预测的标签放在一起。所以我做了以下工作,

predictions = rfmodel.predict(data_rdd.map(lambda x:x.features))
idsAndPredictions = data_rdd.map(lambda lp: lp.label).zip(predictions)

我运行这个代码,它给出了一个错误

ValueError: Can not deserialize RDD with different number of items in pair: (91, 90)

发生错误的原因是zip函数。似乎人们得到这个错误是因为没有相同长度的数据和预测。但在我的例子中,数据和预测显然有相同的长度。
我的问题是如何让这个工作,如果这是一个Spark错误,有没有其他方法来实现同样的结果?

pu82cl6c

pu82cl6c1#

奇怪的是,我将分区的数量从默认的500000个减少到了500个。我希望有人能启发我。

相关问题