Permettez-moi aider à clarifier au sujet aléatoire en profondeur et comment Spark utilise gestionnaires shuffle. Je signale quelques ressources très utiles:gestionnaires de lecture aléatoire Comprendre Spark
https://trongkhoanguyenblog.wordpress.com/
https://0x0fff.com/spark-architecture-shuffle/
https://github.com/JerryLead/SparkInternals/blob/master/markdown/english/4-shuffleDetails.md
En les lisant, je compris qu'il existe différents gestionnaires de lecture aléatoire. Je veux mettre l'accent sur deux d'entre eux: hash manager
et sort manager
(qui est le gestionnaire par défaut).
Pour exposer ma question, je veux commencer par une transformation très commune:
val rdd = reduceByKey(_ + _)
Cette transformation provoque l'agrégation carte côté puis Shuffle pour amener tous les mêmes clés dans la même partition .
Mes questions sont les suivantes:
TOTALISATION Plan-Side implémentés à l'aide d'une transformation interne de mapPartition et l'agrégation ainsi toutes les mêmes touches en utilisant la fonction de combinaison ou est-il mis en œuvre avec un
AppendOnlyMap
ouExternalAppendOnlyMap
?Si
AppendOnlyMap
ouExternalAppendOnlyMap
cartes sont utilisées pour l'agrégation, ils sont également utilisés pour réduire l'agrégation côté qui se passe dans leResultTask
? Quel est le but de ces deux types de cartes (AppendOnlyMap
ouExternalAppendOnlyMap
)?Les adresses
AppendOnlyMap
ouExternalAppendOnlyMap
sont-elles utilisées par tous les gestionnaires de shuffle ou uniquement par sortManager?Je l'ai lu après
AppendOnlyMap
ouExternalAppendOnlyMap
sont pleins, sont déversée dans un fichier, comment exactement ces étapes se produisent? En utilisant le gestionnaire de shuffle de tri, nous utilisons un appendOnlyMap pour agréger et combiner des enregistrements de partition, n'est-ce pas? Ensuite, lorsque la mémoire d'exécution est pleine, nous commençons à trier la carte, à la déverser sur le disque puis à nettoyer la carte, ma question est la suivante: quelle est la différence entre une sauvegarde sur disque et une écriture aléatoire? Ils consistent essentiellement à créer un fichier sur un système de fichiers local, mais ils sont traités différemment, les enregistrements d'écriture aléatoire, ne sont pas placés dans appendOnlyMap. Est-ce que peut expliquer en détail ce qui se passe quand reduceByKey est en cours d'exécution, en m'expliquant toutes les étapes nécessaires pour accomplir cela? Comme par exemple toutes les étapes pour l'agrégation côté carte, le brassage et ainsi de suite.
@JacekLaskowski Vous êtes un expert en shuffling Spark;) –
également @ 0x0FFF est un expert en shuffling Spark – Giorgio