Plan côté Rejoignez
Dans une carte côté (fragment-répliquées) joindre, vous détenez un ensemble de données en mémoire (en exemple une table de hachage) et rejoindre l'autre ensemble de données, enregistrement par cas record. Dans Pig, vous écririez
edges_from_list = JOIN a_follows_b BY user_a_id, some_list BY user_id using 'replicated';
en prenant soin que l'ensemble de données plus petit est sur le droit. Ceci est extrêmement efficace, car il n'y a pas de surcharge réseau et une demande CPU minimale.
Réduire Rejoignez
Dans une réduction côté rejoindre, vous regroupez sur la jointure tri fusion norme de clé à l'aide Hadoop.
<user_id {A, B, F, ..., Z}, { A, C, G, ..., Q} >
et émettent un record pour chaque paire d'un élément du premier ensemble avec un élément de la deuxième série:
[A user_id A]
[A user_id C]
...
[A user_id Q]
...
[Z user_id Q]
Vous devez concevoir vos clés afin que l'ensemble de données avec le plus petit nombre d'enregistrements par la clé vient en premier - vous devez garder le premier groupe en mémoire et le second après. Dans Pig, pour une jointure standard, vous accomplissez ceci en mettant le dernier jeu de données le plus grand en dernier. (Par opposition à la jointure fragment-répliquée, où l'ensemble de données en mémoire est donné en dernier).
Notez que pour une jointure côté carte, le entier du jeu de données plus petit doit être en mémoire. Dans une jointure à réduction standard, seuls les groupes de chaque clé doivent être en mémoire (en fait le groupe de chaque clé excepté le dernier). Il est possible d'éviter même cette restriction, mais cela nécessite des soins; regardez par exemple au skewed join dans Pig.
Merge Join
Enfin, si les deux ensembles de données sont stockées dans l'ordre au total triés sur la clé de jointure, vous pouvez faire une jointure de fusion sur le côté de la carte. Identique à la jointure reduce-side, vous faites un tri de fusion vers cogroup sur la clé de jointure, puis projetez (aplatissez) sur les paires. Pour cette raison, lors de la génération d'un jeu de données fréquemment lu, il est souvent judicieux d'effectuer un tri total au dernier passage. Zebra et d'autres bases de données peuvent également vous donner une entrée totalement triée pour (presque) gratuitement.