0

我使用Scala(2.10.4 版本)并且Spark- 我已移至Spark1.0.1。版本并注意到我的一个脚本现在无法正常工作。MLlib它以下列方式使用库中的k-means 方法。

假设我有一个KMeansModel名为clusters

scala> clusters.toString
res8: String = org.apache.spark.mllib.clustering.KMeansModel@689eab53

这是我有问题的方法以及我在尝试编译它时收到的错误:

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文档清楚地表明该predict函数需要一个Array[Double]类型的参数,我想我确实(不是吗?)给它一个这种类型的参数。预先感谢您对我做错了什么提出任何建议。

4

1 回答 1

2

您使用的是 Spark 1.0.1,但您引用的文档页面适用于 0.9.0。检查当前文档,您会发现 API 已更改。有关背景,请参阅迁移指南

于 2014-07-25T14:45:04.427 回答