Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
enseignement:tp:bda:hadoop:tp2:2016 [2016/10/18 06:42]
ecoquery [Jointure dans le map]
enseignement:tp:bda:hadoop:tp2:2016 [2016/10/21 14:21] (Version actuelle)
ecoquery [Données et requête]
Ligne 4: Ligne 4:
  
   * Tester vos traitements (chargements et requêtes) sur de petits volumes d'abord (par exemple 2 fichiers pour chaque table)   * Tester vos traitements (chargements et requêtes) sur de petits volumes d'abord (par exemple 2 fichiers pour chaque table)
-  * Utilisez un utilitaire comme ''%%screen%%'' ([[http://aperiodic.net/screen/|documentation]]) qui permettra de continuer les requêtes tout en étant déconnecté du master+  * Utilisez un utilitaire comme ''%%screen%%'' ([[http://aperiodic.net/screen/|documentation]]) qui permettra de continuer les requêtes tout en étant déconnecté du master (pour l'installer, lancer la commande suivante sur le master: ''sudo apt-get install screen'').
  
 ===== Modalités de rendu ===== ===== Modalités de rendu =====
Ligne 21: Ligne 21:
 On considère le jeu de données du TP précédent, mais dans son ensemble, c'est-à-dire les deux tables ''%%Source%%'' et ''%%Object%%'' et tous les fichiers de données de ces tables. Une description plus détaillée de ce schéma est disponible [[https://lsst-web.ncsa.illinois.edu/schema/index.php?t=Object&sVer=PT1_2|ici]]. On considère le jeu de données du TP précédent, mais dans son ensemble, c'est-à-dire les deux tables ''%%Source%%'' et ''%%Object%%'' et tous les fichiers de données de ces tables. Une description plus détaillée de ce schéma est disponible [[https://lsst-web.ncsa.illinois.edu/schema/index.php?t=Object&sVer=PT1_2|ici]].
  
-On souhaite répondre à la question suivante: calculer pour chaque objet observé avant le point temporel (''%%earliestObsTime%%'') 50980.0 le nombre d'observations (i.e. de tuples de la table ''%%Source%%'') ainsi que la moyenne de la mesure ''%%sourceWidth_SG%%'':+On souhaite répondre à la question suivante: calculer pour chaque objet observé avant le point temporel (''%%earliestObsTime%%''<del>50980.0</del> 50985.0 le nombre d'observations (i.e. de tuples de la table ''%%Source%%'') ainsi que la moyenne de la mesure <del>''%%sourceWidth_SG%%''</del> ''%%flux_Gaussian%%'':
  
 <code> <code>
-SELECT o.objectId, count(*) as cnt, avg(sourceWidth_SGsrcW_avg+SELECT o.objectId, count(*) as cnt, avg(flux_GaussianflxG_avg
 FROM Source s join Object o ON s.objectId = o.objectId FROM Source s join Object o ON s.objectId = o.objectId
-WHERE earliestObsTime <= 50980.0 -- AND s.objectId IS NOT NULL+WHERE earliestObsTime <= 50985.0 -- AND s.objectId IS NOT NULL
 GROUP BY o.objectId GROUP BY o.objectId
 </code> </code>
 Il y a deux possibilités pour répondre à cette requête: effectuer une jointure en utilisant la valeur de l'attribut de jointure (''%%objectId%%'') comme clé lors du //shuffle// ou effectuer la jointure au niveau du map (ce qui suppose que les données concernées par cette jointure se trouvent dans le même noeud). Dans ce TP on va d'abord implémenter la première puis la seconde version. Il y a deux possibilités pour répondre à cette requête: effectuer une jointure en utilisant la valeur de l'attribut de jointure (''%%objectId%%'') comme clé lors du //shuffle// ou effectuer la jointure au niveau du map (ce qui suppose que les données concernées par cette jointure se trouvent dans le même noeud). Dans ce TP on va d'abord implémenter la première puis la seconde version.
 +
 +
 +Si on se limite au contenu des fichiers ''Source-001'' et ''Object-001'', on doit obtenir 152 ou 153 résultats.
  
 ===== Jointure via la clé de shuffle/reduce ===== ===== Jointure via la clé de shuffle/reduce =====