Par exemple, j'ai une Scala RDD
avec 10000 éléments, je veux prendre chaque élément un par un pour traiter. Comment je fais ça? J'ai essayé d'utiliser take(i).drop(i-1)
, mais cela prend énormément de temps.Comment parcourir efficacement un RDD
1
A
Répondre
1
D'après ce que vous avez dit dans les commentaires:
yourRDD.map(tuple => tuple._2.map(elem => doSomething(elem)))
Le premier map
itérera sur les tuples à l'intérieur de votre RDD
, c'est pourquoi j'ai appelé la tuple
variable, pour chaque tuple
nous obtenons la deuxième élément ._2
et appliquer un map
qui parcourent tous les éléments de votre Iterable
c'est pourquoi j'ai appelé la variable elem
. doSomething()
est juste une fonction aléatoire de votre choix à appliquer sur chaque élément.
Pourquoi n'utilisez-vous pas simplement 'map' sur votre' RDD' ou 'foreach'? – meucaa
J'utilise scala. Pour exeampe, mon type rdd est org.apache.spark.rdd.RDD [(String, Iterable [(Chaîne, Chaîne, Chaîne, Chaîne)])], je veux juste obtenir chaque élément puis faire un autre traitement. –
Vous voulez parcourir sur 'Tuple (String, Iterable [(Chaîne, Chaîne, Chaîne, Chaîne)])' ou sur votre 'Iterable'? – meucaa