Ho bisogno di aggiungere due matrici che sono memorizzate in due file.Aggiunta di due RDD [mllib.linalg.Vector] '
Il contenuto di latest1.txt
e latest2.txt
ha la prossima str:
1 2 3 4 5 6 7 8 9
io sto leggendo i file come segue:
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
voglio aggiungere r1, r2. Quindi, c'è un modo per aggiungere questi due RDD[mllib.linalg.Vector]
in Apache-Spark.
Zip i due RDDs insieme, poi la mappa sopra la risultante RDD –
sì mi piace che val rdd3 = rdd1.zip (rdd2) scala> val rdd4 = rdd3.map {e => e._1 + e. _2} e sto ricevendo errore: 22: errore: tipo mancata corrispondenza; trovati: org.apache.spark.mllib.linalg.Vector richiesto: stringa val r4 = r3.map {e => e._1 + e._2} poiché non c'è + o aggiunge operazione sui vettori mllib l'operazione di aggiunta è definita su util.Vectors – krishna
Sembra che + non sia l'operatore per aggiungere due Vettori in modo da ottenere il valore implicito predefinito che tenta di convertire in String. –