Spark / Scala: Passage de RDD à la Fonction
Je suis curieux de savoir ce qu'est exactement le passage d'un RDD à une fonction ne Spark.
def my_func(x : RDD[String]) : RDD[String] = {
do_something_here
}
Supposons que nous définissons une fonction comme ci-dessus. Lorsque nous appelons la fonction et de passer un existant RDD[String] objet en tant que paramètre d'entrée, est-ce my_function faire une "copie" de ce RDD que le paramètre de la fonction? En d'autres termes, est-elle appelée par la référence ou de l'appelé par valeur?
OriginalL'auteur Jes | 2015-06-25
Vous devez vous connecter pour publier un commentaire.
En Scala, rien n'est copié (dans le sens de passer par valeur en C/C++) lorsqu'il est passé autour. La plupart des types de base Int, String, Double, etc. sont immuables, donc passage par référence est très sûr. (Note: Si vous êtes de passage à un objet mutable et vous le changer, alors n'importe qui avec une référence à cet objet va voir le changement).
En plus de cela, Rdd sont des paresseux, distribué, immuable collections. En passant RDDs à travers les fonctions et l'application de la transformation (carte, filtre, etc.) n'a pas vraiment de transfert des données ou des déclencheurs de tout calcul.
Tous enchaînés les transformations sont "retenues" et sera automatiquement déclenchée dans le bon ordre lorsque vous appliquer et action sur la RDD, comme la persistance ou la collecte localement au conducteur (par
collect()
,take(n)
, etc.)OriginalL'auteur marios
Étincelle met en œuvre le principe "envoyer le code de données" plutôt que d'envoyer les données vers le code. Donc, ici, il va se passer tout à fait le contraire. C'est la fonction qui va être distribué et envoyé à la Rdd.
Rdd sont immuables, donc soit votre fonction sera de créer un nouveau RDD (transformation) ou de créer de la valeur (action).
La question intéressante ici est, si vous définissez une fonction, qu'est-ce exactement est envoyé à la RDD (et réparties entre les différents nœuds, avec ses coûts de transfert)? Une bonne explication ici:
http://spark.apache.org/docs/latest/programming-guide.html#passing-functions-to-spark
OriginalL'auteur Antoni