Как преобразовать Mahout VectorWritable в вектор в Spark

У меня есть VectorWritable (org.apache.mahout.math.VectorWritable), который исходит из файла последовательности, сгенерированного Mahout, и я хотел бы преобразовать его в тип Vector (org.apache.spark.mllib.linalg.Vectors) Spark. Как я могу сделать это в Scala?


person HHH    schedule 31.07.2015    source источник


Ответы (1)


Предполагая, что у нас есть RDD[(Text, VectorWritable)] из вашего предыдущего вопроса.

import scala.collection.JavaConverters.iterableAsScalaIterableConverter

def mahoutToScala(v: org.apache.mahout.math.VectorWritable) =  {
    val scalaArray = v.get.all.asScala.map(_.get).toArray
    org.apache.spark.mllib.linalg.Vectors.dense(scalaArray)
}

rdd.map{ case (k, v) => (k.toString, mahoutToScala(v))}
person zero323    schedule 31.07.2015