[英]Scala: Convert RDD[LabelledPoint] to RDD[(Long,Vector)]
我在RDD[LabeledPoint]
有数据(在下面的代码中表示为sparse0.sparseData
)
我想转换为RDD[(Long,Vector)]
以便可以在mllib程序包中运行LDA分析。
我能管理的最好的LDA.run
是RDD[(Long,Vector[Double])]
的映射,当输入LDA.run
方法时该LDA.run
不会编译
尝试映射到RDD[(Long,Vector)]
不会在.map
方法中编译。 (错误向量带有类型参数)
我的地图方法似乎曲折的事实表明我缺少明显的东西。 任何提示将不胜感激
val 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)
Scala Vector
与mllib.linalg.Vector
。 我会用zipWithIndex
val mappedRDD = sparse0.sparseData().map(_.features).zipWithIndex.map(_.swap)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.