Spark MLLib Collobarative过滤隐式反馈:TypeError:没有初始值的空序列的reduce()

时间:2014-12-10 11:11:34

标签: apache-spark apache-spark-mllib collaborative-filtering

我正在尝试使用Spark MLlib来构建隐式反馈推荐系统。我首先在此链接https://databricks-training.s3.amazonaws.com/movie-recommendation-with-mllib.html中运行MovieLens数据集教程中的代码。代码运行成功。然后,我使用测试数据集在此链接https://spark.apache.org/docs/1.1.0/mllib-collaborative-filtering.html#explicit-vs-implicit-feedback中运行代码以获得显式反馈。它运行良好。然后我给出我的数据集,其形式为UserID,MovieID,rating。由于它是隐式反馈,因此评级为1或0.我在第二个链接中运行相同的代码,但使用model = ALS.trainImplicit(rating,rank,numIterations,alpha = 0.01)。我收到以下错误:spark-1.1.0 / python / pyspark / rdd.py“,第760行,在reduce中     return reduce(f,vals) TypeError:没有初始值的空序列的reduce()。

我看到在第二个链接中编写的代码中没有vals参数。错误来自何处以及我们如何解决?

1 个答案:

答案 0 :(得分:1)

通常情况下,如果mllib中发生错误,您将不会收到Python错误,因为trainImplicit的大部分代码都是用Scala编写的(Python部分只是一个包装器) Scala代码)。我认为reduce()中的此错误是由于某些预处理或您在ratings RDD中所做的事情而导致的,并且由于延迟评估,它只会在错误时抛出错误在trainImplicit方法中使用它。