Spark CollectAsMap
Je voudrais savoir comment collectAsMap travaille dans Spark. Plus précisément, je voudrais savoir où l'agrégation des données de toutes les partitions? L'agrégation s'effectuent soit en master ou en travailleurs. Dans le premier cas, chaque travailleur envoyer ses données sur le maître et le maître collecte les données à partir de chaque travailleur, puis maître de l'agrégation des résultats. Dans le second cas, les travailleurs sont responsables de l'agrégation des résultats(après ils échangent des données entre eux) et après que les résultats seront transmis au maître.
Il est essentiel pour moi de trouver un moyen pour que le maître pour être en mesure de recueillir les données de chaque partition séparément, sans que les travailleurs de l'échange de données.
OriginalL'auteur | 2015-04-22
Vous devez vous connecter pour publier un commentaire.
Vous pouvez voir comment ils sont fait collectAsMap ici. Depuis la RDD est un n-uplet, on dirait qu'ils suffit d'utiliser la normale CA recueillir et traduire les tuples dans une carte de clé,la valeur des paires. Mais ils ne le mentionner dans le commentaire que le multi-carte n'est pas pris en charge, vous avez besoin d'un 1-de-1 clé/valeur de la cartographie à travers de vos données.
collectAsMap fonction
Recueillir ce n'est d'exécuter une Étincelle de l'emploi et d'en obtenir les résultats de chaque partition de la part des ouvriers et des agrégats avec une réduction/concat phase sur le conducteur.
fonction de collecte
Ainsi que, cela doit être le cas que le pilote de collecte des données auprès de chaque partition séparément sans les travailleurs échange de données pour effectuer
collectAsMap
.Remarque, si vous faites des transformations sur vos RDD avant d'utiliser
collectAsMap
qui cause une lecture aléatoire de se produire, il y a peut être une étape intermédiaire qui provoque des travailleurs pour l'échange de données entre eux. Découvrez votre maître du cluster de l'INTERFACE utilisateur de l'application pour voir plus d'informations sur la façon de spark est l'exécution de votre application.OriginalL'auteur Rich
Tout d'abord dans les deux opérations, l'ensemble de vos données, qui est présent dans RDD voyage à partir de différents exécuteurs/travailleurs de Capitaine/Pilote. La fois de recueillir et de collectAsMap sera juste rassembler les données provenant de diverses liquidateurs de travailleurs. DONC, c'est pourquoi il est toujours recommandé de ne Pas utiliser de recueillir jusqu'à ce que et à moins que vous n'en avez pas d'autre option.
Je dois dire que c'est la dernière collection, on doit tenir compte du point de vue des performances.
Ce qui concerne,
Neeraj
OriginalL'auteur neeraj bhadani
De soutien pour les réponses ci-dessus:
collectAsMap()
- renvoie les paires clé-valeur en tant que dictionnaire (countByKey()
est une autre fonction qui retourne un dictionnaire.)collectAsMap()
,Collect()
,take(n)
,takeOrdered(n)
,takeSample(False,..)
Ces méthodes apporte toutes les données pour le pilote. Programmeur besoin de prendre precaustion lors de l'utilisation en production.
OriginalL'auteur Krish