Ich habe Daten in einem RDD[LabeledPoint]
(bezeichnet als sparse0.sparseData
im Code unten)Scala: Convert RDD [LabelledPoint] zu RDD [(Long, Vector)]
ich RDD[(Long,Vector)]
konvertieren wollen, so kann ich die LDA laufen Analyse im MLLIB-Paket.
Das Beste, was ich eine Karte zu RDD[(Long,Vector[Double])]
verwalten kann, die nicht kompiliert, wenn sie in dem Verfahren LDA.run
eingegeben
-RDD[(Long,Vector)]
abzubilden versuchen, kompilieren nicht in der .map
Methode. (Fehlervektor nimmt Typparameter)
Die Tatsache, dass meine Kartenmethode verschlungen erscheint, legt nahe, dass mir etwas Offensichtliches fehlt. Irgendwelche Hinweise stark
geschätzt würdeval mappedData:Map[Long,Vector[Double]]=sparse0.sparseData().collect().map
{
var count:Int=0
row =>
count=count+1
new Tuple2[Long,Vector[Double]](count,row.features.toArray.toVector)
}.toMap
val mappedRDD=spark.sparkContext.parallelize(mappedData.toSeq)
// Cluster the documents into three topics using LDA
val ldaModel = new LDA().setK(3).run(mappedRDD)
yup, Sie schlugen mich, um es :) wenn mein mappedData mit val mappedData eingegeben wird: Map [Lange, org.apache.spark.mllib.linalg.Vector] alles funktioniert – Jake