Sommaire

JoinTablesJoinTables

1. Introduction

Il est possible dans Hadoop de réaliser des jointures de tables au sens SQL du terme. Plusieurs options s’offrent au programmeur :

  • Écrire un programme en Java pour réaliser la jointure :

    • Soit au niveau de la phase map ( map-side joinmap-side join).

    • Soit au niveau de la phase reduce ( reduce-side joinreduce-side join).

    Une jointure de type map-side join est plus simple à programmer qu’une jointure de type reduce-side join, mais les risques de saturation de la mémoire vive sont plus élevés.

  • Écrire un programme en Pig Latin.

  • Écrire un programme en HiveQL.

L’objectif de cette section est de comparer le même programme écrit en Java (map-side join), en Pig Latin et en HiveQL.

Le code n’est pas commenté car cela n’est pas nécessaire pour se faire une idée des forces et faiblesses de chaque approche.

Le programme JoinTables consiste à rapprocher les tables commandes et clients d’une entreprise (pour simplifier on fait l’hypothèse que chaque commande ne porte que sur un seul produit) :

  • La table commandes comporte les champs :

  • idcommande

  • idClient

  • idProduit

  • quantite

  • La table clients comporte les champs :

  • idClient

  • nomClient

Clients

Commandes

idClient

nomClient

idCommande

idClient

idProduit

quantite

1

Société A

1

1

111

1

2

Société B

2

2

111

4

3

Société C

3

3

333

2

4

1

222

3

images/fleche.PNG

Jointure

idCommande

IdClient

idProduit

quantité

nomClient ...