Si les données sont liées, vous devez vous assurer que les informations sont transmises. MapReduce décompose les données et les traite indépendamment des relations (non implémentées):
La carte lit juste les données dans des blocs à partir des fichiers d'entrée et les transmet à la fonction de carte un "enregistrement" à la fois. L'enregistrement par défaut est une ligne (mais peut être modifié).
Vous pouvez annoter les données dans Map avec leur origine, mais ce que vous pouvez essentiellement faire avec Map est: classer les données par catégories. Vous émettez une nouvelle clé et de nouvelles valeurs et des groupes MapReduce par la nouvelle clé. Donc, s'il y a des relations entre différents enregistrements: choisissez la même clé (ou similiar * 1) pour les émettre, donc ils sont regroupés. Pour réduire, les données sont partitionnées/triées (c'est l'endroit où le regroupement a lieu) et ensuite la fonction de réduction reçoit toutes les données d'un groupe: une clé et toutes les valeurs associées. Maintenant, vous pouvez agréger sur les valeurs. C'est tout.
Vous avez donc un groupe global implémenté par MapReduce. Tout le reste est de votre responsabilité. Vous voulez un produit croisé provenant de deux sources? Implémentez-le par exemple en introduisant des clés artificielles et multi-émetteurs (fragment et réplique jointe). La limite, c'est votre imagination. Et: vous pouvez toujours transmettre les données via un autre travail.
* 1: similaire, car vous pouvez influencer le choix du groupement plus tard. normalement c'est un groupe soit une fonction d'identité, mais vous pouvez changer cela.