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/21 07:31]
ecoquery [Données et requête]
enseignement:tp:bda:hadoop:tp2:2016 [2016/10/21 14:21] (Version actuelle)
ecoquery [Données et requête]
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 <del>''%%sourceWidth_SG%%''</del> ''%%flux_Gaussian%%'':+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(flux_Gaussian) flxG_avg SELECT o.objectId, count(*) as cnt, avg(flux_Gaussian) flxG_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 =====