Comment faire pour trier les RDD
J'ai scoreTriplets est CA[ARRAY[String]] dont je suis le tri par la suite.
var ScoreTripletsArray = scoreTriplets.collect()
if (ScoreTripletsArray.size > 0) {
/*Sort the ScoreTripletsArray descending by score field*/
scala.util.Sorting.stableSort(ScoreTripletsArray, (e1: Array[String], e2: Array[String]) => e1(3).toInt > e2(3).toInt)
}
Mais collect() va être lourd Si il y a des éléments en manque.
J'ai donc besoin de trier des RDD par score
sans l'aide de collect().
scoreTriples est CA[ARRAY[String]] chaque ligne de RDD permettra de stocker un Tableau de variables.
EdgeId sourceID destID score
sourceNAme destNAme distance
Merci de me donner une référence ou un indice.
OriginalL'auteur Sandip Armal Patil | 2015-11-18
Vous devez vous connecter pour publier un commentaire.
Tri sera, en raison de brassage, une opération coûteuse, même sans la collecte mais vous pouvez utiliser
sortBy
méthode:Si vous n'êtes intéressés que dans les premiers résultats puis
top
ettakeOrdered
sont généralement préférés.Si vous voulez toutes les données le seul moyen est de recueillir.
top
ettakeOrdered
déjà renvoie un tableau.puis-je utiliser comme
rdd.top(rdd.count())(Ordering.by[Array[String], Int](_.apply(3).toInt))
Afin que je puisse obtenir toutes les donnéesIl ne fait pas de sens.
top
/takeOrdered
sont supérieur que si vous avez besoin seulement d'une petite partie des données. SinonsortBy
suivie parcollect
est la bonne façon de faire.Oui, il retournera un tableau.
OriginalL'auteur zero323
Il est sortBy méthode de RDD (voir doc).
Vous pouvez faire quelque chose comme ça
OriginalL'auteur ponkin