Je suis assez nouveau pour Scala et Spark, et j'avais quelques questions sur l'affichage des résultats dans le fichier de sortie.Afficher la sortie sous un certain format
J'ai une carte dans laquelle chaque clé est associée à une liste de la liste (Map[Int, List<Double>]
), tels que:
(2, List(x1,x2,x3), List(y1,y2,y3), ...).
Je suis censé afficher pour chaque touche les valeurs dans les listes de listes, tels que:
2 x1,x2,x3
2 y1,y2,y3
1 z1,z2,z3
et ainsi de suite. Lorsque j'utilise la fonction saveAsTextFile
, cela ne me donne pas ce que je veux dans la sortie. Est-ce que quelqu'un sait comment je peux le faire?
EDIT: Ce est l'une de ma fonction:
def PrintCluster(vectorsByKey : Map[Int, List[Double]], vectCentroidPairs : Map[Int, Int]) : Map[Int, List[Double]] = {
var vectorsByCentroid: Map[Int, List[Double]] = Map()
val SortedCentroid = vectCentroidPairs.groupBy(_._2).mapValues(x => x.map(_._1).toList).toSeq.sortBy(_._1).toMap
SortedCentroid.foreach { case (centroid, vect) =>
var nbVectors = vect.length
for (i <- 0 to nbVectors - 1) {
var vectValues = vectorsByKey(vect(i))
println(centroid + " " + vectValues)
vectorsByCentroid += (centroid -> (vectValues))
}
}
return vectorsByCentroid
}
Je sais qu'il est mal, parce que je ne peux affecter une clé unique pour un groupe de valeurs. C'est pourquoi il ne me renvoie que la première liste pour chaque touche de la carte. Je pensais que pour utiliser la fonction saveAsTextFile, j'ai dû nécessairement utiliser une structure de carte, mais je ne sais pas vraiment.
Qu'est-ce que 'saveAsTextFile' vous donner et comment fonctionne-t-il différent de ce que vous voulez? En outre, il ne semble pas que vous ayez une liste de listes mais des listes normales ('Map [Int, List [Double]]')? – Shaido
Vous pourriez vouloir montrer votre code Scala. Également, essayez d'écrire un jeu de données en utilisant le format CSV mais réglez le délimiteur sur un onglet –
@Shaido La sortie que j'ai est logique, je veux dire ... Puisque je ne peux avoir qu'une seule clé pour une valeur (format carte), seulement La première valeur est imprimée. C'est ce que j'ai: (3, Liste (-2.7, 6.1, -2.8)), (2, Liste (-2.7, 7.1, -2.8)). – Sol