2014-07-25 23 views
0

我与Scala(2.10.4版本)和Spark一起工作 - 我已转移到Spark 1.0.1。版本,并注意到我的一个脚本现在无法正常工作。它以如下方式使用MLlib库中的k-means方法。为什么从Spark 1.0.1开始出现KMeansModel.predict错误?

假设我有一个名为clusters一个KMeansModel对象:

scala> clusters.toString 
res8: String = [email protected] 

这里是我的问题的方法和我收到试图编译错误:

scala> def clustersSize(normData: RDD[Array[Double]]) = { 
| normData.map(r => clusters.predict(r)) 
| } 

<console>:28: error: overloaded method value predict with alternatives: 
    (points: org.apache.spark.api.java.JavaRDD[org.apache.spark.mllib.linalg.Vector])org.apache.spark.api.java.JavaRDD[Integer] <and> 
    (points: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector])org.apache.spark.rdd.RDD[Int] <and> 
    (point: org.apache.spark.mllib.linalg.Vector)Int 
cannot be applied to (Array[Double]) 
    normData.map(r => clusters.predict(r)) 

KMeansModel documentation明确表示, predict函数需要一个参数Array[Double]类型,我想我会把(不是吗?)这样的类型的参数给它。提前谢谢你对我做错什么的建议。

回答