Scala 类型不匹配-(Int,Vector)而不是Vector
我需要Scala 类型不匹配-(Int,Vector)而不是Vector,scala,apache-spark,Scala,Apache Spark,我需要并行化我的数据集,但是,一旦我尝试使用重新分区的数据实例化行矩阵,就会出现类型不匹配错误 以下是读取和重新划分数据的代码: val data = sc.textFile("data.txt.gz").flatMap(r => r.split(' ') match { case Array(doc, word, count) => Some((doc.toInt, (word.toInt - 1, count.toDouble))) case _ => None }
并行化
我的数据集,但是,一旦我尝试使用重新分区的数据实例化行矩阵
,就会出现类型不匹配
错误
以下是读取和重新划分数据的代码:
val data = sc.textFile("data.txt.gz").flatMap(r => r.split(' ') match {
case Array(doc, word, count) => Some((doc.toInt, (word.toInt - 1, count.toDouble)))
case _ => None
}).groupByKey().mapValues(a => Vectors.sparse(vocab_size, a.toSeq))
val repartitioned = sc.parallelize(Seq(data), 10)
现在我不太确定如何构造一个行矩阵
val mat: RowMatrix = new RowMatrix(repartitioned)
给出以下错误:
Main.scala:59: type mismatch;
found : org.apache.spark.rdd.RDD[org.apache.spark.rdd.RDD[(Int, org.apache.spark.mllib.linalg.Vector)]]
required: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]
val mat: RowMatrix = new RowMatrix(repartitioned)
parallelize用于从一系列本地值创建RDD,您已经有了一个RDD。尝试对其调用parallelize不起作用,因为您正在尝试将rdd放入rdd。如果要重新分区数据,请使用重新分区方法。即数据重新分区(10)
调用mapValues时,它仅应用于对值的操作,但结果RDD仍然是RDD[(键,值)]。如果您希望放弃这些键,那么只需使用map而不是mapValues。parallelize用于从一系列本地值创建和RDD,您已经有了RDD。尝试对其调用parallelize不起作用,因为您正在尝试将rdd放入rdd。如果要重新分区数据,请使用重新分区方法。即数据重新分区(10) 调用mapValues时,它仅应用于对值的操作,但结果RDD仍然是RDD[(键,值)]。如果希望放弃关键点,则只需使用map而不是mapValues