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