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 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
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 ?