L'ensemble de ce TP est à réaliser sur Linux (Debian et Ubuntu par exemple).
L'objectif de cette étape est de préparer l'environnement pour la réalisation de ce mini-projet.
La première étape consiste à cloner ce projet :
git clone https://github.com/polytech-nantes-puddi/tp.git
Nous allons ensuite procéder à l'installation des prérequis systèmes :
sudo apt update
sudo apt install openjdk-11-jdk
sudo apt install python3 python3-venv
python3 -m venv spark-env
Il est maintenant nécessaire d'activer l'environnement virtuel Python :
source spark-env/bin/activate
Nous procédons ensuite à l'installation des paquets python nécessaire au TP :
pip install --upgrade pip
pip install pyspark
Note : À chaque fois que vous ouvrirez un nouveau terminal, il sera nécessaire d'activer l'environnement virtuel Python avec la commande :
source spark-env/bin/activate
L'objectif de cette étape est de télécharger les fichiers de données nécessaires à la réalisation de ce mini-projet :
make part1
Cela devrait :
- Télécharger les ZIP de données dans le répertoire
dataset/zip/
- Extraire les données des fichiers ZIP dans le répertoire
dataset/raw/
Pour information, la documentation sur les données est disponible ici : http://data.gdeltproject.org/documentation/GDELT-Data_Format_Codebook.pdf.
-
Exécuter la version WordCount Python :
python3 part2-wordcount-hamlet-python.py
-
Exécuter la version WordCount PySpark (version RDD) :
spark-submit part2-wordcount-hamlet-pyspark.py
-
Exécuter la version WordCount PySpark (version Dataframe) :
spark-submit part2-wordcount-hamlet-pyspark-2.py
-
Comparer les résultats.
-
Adapter les scripts ci-dessus pour filtrer les mots commençant par la lettre
m
. -
Quelle différence sur votre traitement ?
Quelques documentations utiles :
- https://spark.apache.org/docs/latest/quick-start.html
- https://spark.apache.org/docs/latest/rdd-programming-guide.html
- Adapter le script
part3.py
pour obtenir le top 10 des pays les plus pertinents dans l'actualité sur l'échantillon de données téléchargé.
Nous considérerons le code pays comme l'identifiant à trois lettres représenté par Actor1CountryCode
(colonne 7), nous compterons la pertinence d'un événement en fonction de sa colonne NumMentions
(colonne 31).
Cela revient à l'exercice WordCount où nous comptons les NumMentions
de chaque événement par pays pour déterminer le Top 10.
Rappel concernant pour l'exécution :
spark-submit part3.py
-
Convertir les données en parquet :
spark-submit part4-convert-to-parquet.py
-
Adapter le script
part4.py
pour réaliser la même analyse que la partie précédente, mais à partir de la vue temporaire.
Rappel concernant pour l'exécution :
spark-submit part4.py
Quelques documentations utiles :
- https://spark.apache.org/docs/latest/api/python/pyspark.sql.html
- https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
- https://s3.amazonaws.com/assets.datacamp.com/blog_assets/PySpark_SQL_Cheat_Sheet_Python.pdf
L'évaluation se portera sur :
- Le script et le résultat (copie d'écran) de la partie 2
- Les analyses de la partie 2
- Le script et le résultat (copie d'écran) de la partie 3
- Le script et le résultat (copie d'écran) de la partie 4
- L'analyse technique de la requête
print(spark.sql("SELECT count(1) FROM gdelt").explain())
présente dans le script de la partie 4 - Une analyse fonctionnelle des données étudiées GDELT sur une problématique identifiée (bonus)
Quelques idées de sujets d'analyse (vous pouvez choisir votre propre sujet) :
- Comparez les religions, les reportages sont-ils biaisés pour certaines religions (voir le paramètre
tone
). - Quelle influence a eu un pays par rapport à un autre (en termes de comptage pur).
- Top des organisations (voir le paramètre
Actor1KnownGroupCode
) mentionnées par mois.
Pour votre analyse, les données référentielles sur notre échantillon de données sont disponibles ici :
Toujours pour votre analyse, voici une page concernant les jointures :
- Scripts et code source
- Compte rendu au format PDF
make bonus
python3 bonus-sample.py
- Quelle est la station avec le plus de mesures en 2022 ?
- Quelle est la mesure moyenne de Nitrites dans la station L'ERDRE A LA CHAPELLE SUR ERDRE ?
- Quelle est la station ayant la plus haute température moyenne en 2019 ?
- Quelle est la commune regroupant le plus de stations ?