2016-05-01 1 views
0

Entrée:fusionner paires scala à un tableau

dupName = (ERIC,KAREN) 
(ERIC,JASON) 
(ERIC,ANTHONY) 

Sortie prévue:

(ERIC,KAREN,JASONC,ANTHONY) 

J'utilise dupName.reduce(_ + _._2), qui toujours obtenir une erreur:

[error]found : String 
[error] required: (String, String) 

Répondre

0

A réduire est l'agrégation toutes les valeurs de A en une seule valeur de A. ou dans votre cas, regrouper plusieurs (String, String) en un seul (String, String). ou sous forme de fonction est une fonction cette réduction:

(concatenatedPair : (String, String), currentPair : (String, String) => (String, String)) 

Si vous souhaitez faire ce que vous essayez de faire vous essayez besoin de la carte, comme ceci:

val arr = List(("ERIC", "JASON"), ("ERIC", "ANTHONY"), ("ERIC", "KAREN")) 
val newArr = arr.flatMap(x => List(x._1, x._2)).distinct 
// newArr is now List(ERIC, JASON, ANTHONY, KAREN) 

Ceci est juste un exemple, car il existe probablement des moyens plus efficaces de le faire (exemple: mettre les cordes dans un Set)

+0

Merci beaucoup. Je pense que j'ai été confondu par Array et List. –

+0

Je ne suis pas vraiment familier avec RDD cependant. –

+0

Ceci n'est pas un RDD (** R ** esilient ** D ** est attribué ** D ** ataset), les RDD proviennent d'une étincelle apache. Ceci est juste un vieux flatMap régulier. – Assaf