Les tâches MapReduce de MaxCompute font transiter les données à travers quatre étapes : Map/Reduce, Sort, Partition et Combiner, chacune disposant d'options de configuration distinctes. La maîtrise de ces termes vous aide à concevoir correctement vos tâches et à déboguer les résultats inattendus.
Fonctionnement
Les données circulent dans une tâche MapReduce selon l'ordre suivant :
(input) → map → [combine] → shuffle & sort → reduce → (output)
Chaque terme abordé dans cette rubrique correspond à une étape ou à une option de configuration de ce pipeline.
Map/Reduce
Une tâche map ou reduce exécute trois méthodes de manière séquentielle :
setup()— s'exécute une fois par worker avant le début du traitementmap()oureduce()— s'exécute pour chaque enregistrement d'entréecleanup()— s'exécute une fois par worker après le traitement de tous les enregistrements
Pour des exemples exécutables, consultez la section Exemples de programmes.
Sort
MaxCompute vous permet de contrôler le comportement de tri via deux types de colonnes :
|
Type de colonne |
Rôle |
Comparateur personnalisé |
|
Colonnes de tri |
Détermine l'ordre de tri. Sélectionnées parmi les colonnes des enregistrements clés générés par un mapper. |
Non pris en charge |
|
Colonnes de groupe |
Sous-ensemble des colonnes de tri. Utilisé pour le tri secondaire. |
Non pris en charge |
Pour un exemple de tri secondaire, consultez le Code source du tri secondaire.
Partition
Les partitionneurs acheminent les données générées par un mapper vers différents reducers selon une logique de partitionnement. MaxCompute prend en charge deux mécanismes :
|
Mécanisme |
Description |
|
Colonnes de partition |
Partitionnement basé sur des colonnes désignées. |
|
Partitionneurs personnalisés |
Logique définie par l'utilisateur pour l'acheminement des enregistrements vers les reducers. |
Lorsque les deux options sont configurées, les colonnes de partition ont priorité sur les partitionneurs personnalisés.
Combiner
Le combiner est une optimisation facultative du framework de calcul MapReduce qui s'exécute lors de l'étape de shuffle. Il combine les enregistrements adjacents, réduisant ainsi le volume de données transféré des mappers vers les reducers.
Décidez d'utiliser ou non la fonction combiner en fonction de votre logique métier. La logique du combiner est identique à celle du reducer : après la génération des données par un mapper, le framework applique le combiner à tous les enregistrements partageant la même clé.
Pour des exemples exécutables, consultez la section Exemples de programmes.