site:enseignement:master:bdle:tmes:algebrespark
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
site:enseignement:master:bdle:tmes:algebrespark [25/10/2017 17:46] – [Exercice 1: Requêtes simples sur les données de Yago] hubert | site:enseignement:master:bdle:tmes:algebrespark [09/10/2018 14:12] (Version actuelle) – amine | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
- | ====== [TME II-3] Algèbre Spark: Dataset ====== | + | ====== [TME II-2] Algèbre Spark: Dataset ====== |
Ce TME aborde le traitement de requêtes Sparql dans la plateforme Spark. | Ce TME aborde le traitement de requêtes Sparql dans la plateforme Spark. | ||
* Formulation des requêtes dans le langage Scala avec les API de Spark RDD et Dataset. | * Formulation des requêtes dans le langage Scala avec les API de Spark RDD et Dataset. | ||
Ligne 17: | Ligne 17: | ||
</ | </ | ||
+ | <showif isloggedin> | ||
+ | **TODO (oct 2017): page MPI pour sparql endpoint sur Yago** | ||
+ | </ | ||
Aller dans votre répertoire de travail et lancer le spark-shell avec l' | Aller dans votre répertoire de travail et lancer le spark-shell avec l' | ||
Ligne 37: | Ligne 40: | ||
Exemple, soient les trois triplets suivants : | Exemple, soient les trois triplets suivants : | ||
(james joue guitare) (marie joue piano) (james ami_de marie) (marie | (james joue guitare) (marie joue piano) (james ami_de marie) (marie | ||
- | le motif ( ?x joue piano) retourne la liaison ?x->james | + | le motif ( ?x joue piano) retourne la liaison ?x->marie |
le motif ( ?x joue ?y) retourne les liaisons ? | le motif ( ?x joue ?y) retourne les liaisons ? | ||
? | ? | ||
Ligne 50: | Ligne 53: | ||
===== Exercice 1: Requêtes simples sur les données de Yago ===== | ===== Exercice 1: Requêtes simples sur les données de Yago ===== | ||
+ | |||
+ | Lire un exemple de données | ||
+ | < | ||
+ | more / | ||
+ | </ | ||
+ | Lire la liste des propriétés | ||
+ | < | ||
+ | more / | ||
+ | </ | ||
===Charger le dataset YAGO=== | ===Charger le dataset YAGO=== | ||
Ligne 130: | Ligne 142: | ||
===R3: Les leaders parisiens === | ===R3: Les leaders parisiens === | ||
- | La requête est une étoile formée de deux triplets | + | |
+ | La requête est une **étoile** formée de deux triplets | ||
<code sparql> | <code sparql> | ||
?x < | ?x < | ||
Ligne 163: | Ligne 176: | ||
+--------------------+--------------------+ | +--------------------+--------------------+ | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===R4: Les joueurs du royaume uni. === | ||
+ | |||
+ | La requête est un **chemin** formé de deux triplets | ||
+ | <code sparql> | ||
+ | ?x < | ||
+ | ?y < | ||
+ | </ | ||
+ | |||
+ | <showif isloggedin> | ||
+ | **<fc # | ||
+ | < | ||
+ | val t1 = yago.where(" | ||
+ | withColumnRenamed(" | ||
+ | withColumnRenamed(" | ||
+ | select(" | ||
+ | |||
+ | val t2 = yago.where(" | ||
+ | withColumnRenamed(" | ||
+ | select(" | ||
+ | |||
+ | val t1t2 = t1.join(t2, " | ||
+ | t1t2.show(5) | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Les 5 premiers éléments du résultat sont : | ||
+ | < | ||
+ | | | ||
+ | +--------------------+--------------------+ | ||
+ | | < | ||
+ | | < | ||
+ | | < | ||
+ | |< | ||
+ | |< | ||
+ | +--------------------+--------------------+ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===R5: Les acteurs qui influencent des créateurs === | ||
+ | |||
+ | La requête est un **flocon** (ou snowflake) formé de 5 triplets : | ||
+ | <code sparql> | ||
+ | ?x < | ||
+ | ?x < | ||
+ | ?x < | ||
+ | ?t < | ||
+ | ?t < | ||
+ | </ | ||
+ | |||
+ | <showif isloggedin> | ||
+ | **<fc # | ||
+ | < | ||
+ | val t1 = yago.where(" | ||
+ | withColumnRenamed(" | ||
+ | withColumnRenamed(" | ||
+ | select(" | ||
+ | |||
+ | val t2 = yago.where(" | ||
+ | withColumnRenamed(" | ||
+ | withColumnRenamed(" | ||
+ | select(" | ||
+ | |||
+ | val t3 = yago.where(" | ||
+ | withColumnRenamed(" | ||
+ | withColumnRenamed(" | ||
+ | select(" | ||
+ | |||
+ | val t4 = yago.where(" | ||
+ | withColumnRenamed(" | ||
+ | withColumnRenamed(" | ||
+ | select(" | ||
+ | |||
+ | val t5 = yago.where(" | ||
+ | withColumnRenamed(" | ||
+ | withColumnRenamed(" | ||
+ | select(" | ||
+ | |||
+ | val r = t1.join(t2, " | ||
+ | r.show(10) | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Le résultat, limité à 10 lignes, doit être: | ||
+ | < | ||
+ | +--------------+----------+---------+-----------------+--------------------+----------------+ | ||
+ | | | ||
+ | +--------------+----------+---------+-----------------+--------------------+----------------+ | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | +--------------+----------+---------+-----------------+--------------------+----------------+ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===R6: Les paires de personnes mariées et nées dans le même pays === | ||
+ | |||
+ | ===R7: Les personnes influencées par un prix nobel=== | ||
+ | |||
+ | ===R8: L' | ||
+ | |||
+ | |||
+ | |||
+ | |||
- | ===== Exercice | + | ===== Exercice |
L’objectif de cet exercice est d’exprimer en Scala les différents types de motifs complexes. | L’objectif de cet exercice est d’exprimer en Scala les différents types de motifs complexes. | ||
Ligne 229: | Ligne 358: | ||
</ | </ | ||
- | ===== Exercice | + | ===== Exercice |
a) A partir de Q4 proposer une requête formant un chemin de longueur 4 puis 5 (avec des propriétés différentes de celles de Q4). | a) A partir de Q4 proposer une requête formant un chemin de longueur 4 puis 5 (avec des propriétés différentes de celles de Q4). |
site/enseignement/master/bdle/tmes/algebrespark.1508946391.txt.gz · Dernière modification : de hubert