Plus de deux RDD[mllib.linalg.Vecteur]'s

J'ai besoin de plus de deux matrices qui sont stockées dans deux fichiers.

Le contenu de latest1.txt et latest2.txt a la prochaine str:

1 2 3 
4 5 6 
7 8 9 

Je suis à la lecture de ces fichiers comme suit:

scala> val rows = sc.textFile(“latest1.txt”).map { line => val values = line.split(‘ ‘).map(_.toDouble)
    Vectors.sparse(values.length,values.zipWithIndex.map(e => (e._2, e._1)).filter(_._2 != 0.0))
}

scala> val r1 = rows
r1: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector] = MappedRDD[2] at map at :14

scala> val rows = sc.textFile(“latest2.txt”).map { line => val values = line.split(‘ ‘).map(_.toDouble)
    Vectors.sparse(values.length,values.zipWithIndex.map(e => (e._2, e._1)).filter(_._2 != 0.0))
}

scala> val r2 = rows
r2: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector] = MappedRDD[2] at map at :14

Je veux ajouter r1, r2. Donc, Est-il possible d'ajouter ces deux RDD[mllib.linalg.Vector]s dans Apache Spark.

  • Zip les deux RDDs ensemble, puis la carte le RDD
  • ouais j'ai fait comme ça val rdd3=rdd1.zip(rdd2) scala> val rdd4 = rdd3.carte{ e => e._1 + e._2} et j'obtiens l'erreur :22: erreur: incompatibilité de type; trouvé : org.apache.spark.mllib.linalg.Vecteur requis: String val r4=r3.carte{e=>e._1 + e._2} puisqu'il n'y pas de + ou ajouter de l'opération sur mllib vecteurs de l'opération d'addition est définie sur util.Vecteurs
  • Ressemble + n'est pas à l'opérateur d'ajouter deux Vecteurs de sorte que vous obtenez la valeur par défaut implict qui tente de convertir à la Chaîne.
  • ouais ,mais je ne pouvais pas trouver n'importe quelle fonction ou l'exploitant qui effectuer une addition.
InformationsquelleAutor krishna | 2015-01-30