So konvertieren Sie org.apache.spark.rdd.RDD [Array [Double]] in Array [Double], das von Spark MLlib benötigt wird
Ich versuche zu implementierenKMeans using Apache Spark
.
val data = sc.textFile(irisDatasetString)
val parsedData = data.map(_.split(',').map(_.toDouble)).cache()
val clusters = KMeans.train(parsedData,3,numIterations = 20)
uf dem ich den folgenden Fehler erhalte:
error: overloaded method value train with alternatives:
(data: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector],k: Int,maxIterations: Int,runs: Int)org.apache.spark.mllib.clustering.KMeansModel <and>
(data: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector],k: Int,maxIterations: Int)org.apache.spark.mllib.clustering.KMeansModel <and>
(data: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector],k: Int,maxIterations: Int,runs: Int,initializationMode: String)org.apache.spark.mllib.clustering.KMeansModel
cannot be applied to (org.apache.spark.rdd.RDD[Array[Double]], Int, numIterations: Int)
val clusters = KMeans.train(parsedData,3,numIterations = 20)
so habe ich versucht, Array [Double] in Vector umzuwandeln, wie gezeigtHie
scala> val vectorData: Vector = Vectors.dense(parsedData)
uf dem ich folgende Fehlermeldung bekommen habe:
error: type Vector takes type parameters
val vectorData: Vector = Vectors.dense(parsedData)
^
error: overloaded method value dense with alternatives:
(values: Array[Double])org.apache.spark.mllib.linalg.Vector <and>
(firstValue: Double,otherValues: Double*)org.apache.spark.mllib.linalg.Vector
cannot be applied to (org.apache.spark.rdd.RDD[Array[Double]])
val vectorData: Vector = Vectors.dense(parsedData)
So schließe ich, dassorg.apache.spark.rdd.RDD[Array[Double]]
ist nicht dasselbe wie Array [Double]
Wie kann ich mit meinen Daten als @ fortfahreorg.apache.spark.rdd.RDD[Array[Double]]
? oder wie kann ich @ konvertierorg.apache.spark.rdd.RDD[Array[Double]] to Array[Double]
?