我使用的是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错误,有没有其他方法来实现同样的结果?
1条答案
按热度按时间pu82cl6c1#
奇怪的是,我将分区的数量从默认的500000个减少到了500个。我希望有人能启发我。