0

Scala(2.10.4 バージョン)を使用していますが、 1.0.1Sparkに移行しました。Sparkバージョンを調べて、スクリプトの 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