为啥从 Spark 1.0.1 开始出现 KMeansModel.predict 错误?
Posted
技术标签:
【中文标题】为啥从 Spark 1.0.1 开始出现 KMeansModel.predict 错误?【英文标题】:Why KMeansModel.predict error has started to appear since Spark 1.0.1.?为什么从 Spark 1.0.1 开始出现 KMeansModel.predict 错误? 【发布时间】:2014-09-17 07:21:43 【问题描述】:我使用Scala
(2.10.4 版本)和Spark
- 我已移至Spark
1.0.1。版本并注意到我的一个脚本现在无法正常工作。它以下列方式使用 MLlib
库中的 k-means 方法。
假设我有一个名为 clusters
的 KMeansModel
对象:
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 documentation 明确表示predict
函数需要Array[Double]
类型的参数,我想我确实(不是吗?)给它一个这种类型的参数。预先感谢您对我做错了什么提出任何建议。
【问题讨论】:
【参考方案1】:您使用的是 Spark 1.0.1,但您引用的文档页面适用于 0.9.0。检查current documentation,您会看到API 已更改。背景见the migration guide。
【讨论】:
以上是关于为啥从 Spark 1.0.1 开始出现 KMeansModel.predict 错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥从 Spark 写入 Vertica DB 比从 Spark 写入 MySQL 需要更长的时间?