Créer un RDD de base et le transformer
Le volume de données non structurées (lignes de journaux, images, fichiers binaires) augmente considérablement et PySpark est un excellent framework pour analyser ce type de données à l'aide des RDD. Dans cet exercice en trois parties, vous écrirez un code qui calcule les mots les plus courants dans les Œuvres complètes de William Shakespeare.
Voici en bref les étapes de l'écriture du programme de comptage de mots :
- Créez un RDD de base à partir du fichier
Complete_Shakespeare.txt
. - Utilisez la transformation RDD pour créer une longue liste de mots à partir de chaque élément du RDD de base.
- Supprimez les mots vides de vos données.
- Créez un RDD de paires où chaque élément est un tuple de paires de
('w', 1)
- Regroupez les éléments du RDD de paires par clé (mot) et additionnez leurs valeurs.
- Échangez les clés (mots) et les valeurs (nombres) de manière à ce que les clés soient les nombres et les valeurs les mots.
- Enfin, triez le RDD par ordre décroissant et affichez les 10 mots les plus fréquents et leur fréquence.
Dans ce premier exercice, vous allez créer un RDD de base à partir du fichier Complete_Shakespeare.txt
et le transformer pour créer une longue liste de mots.
N'oubliez pas que vous disposez déjà d'un SparkContext sc
dans votre espace de travail. Une variable file_path
(qui est le chemin d'accès au fichier Complete_Shakespeare.txt
) est également chargée à votre intention.
Cet exercice fait partie du cours
Principes fondamentaux des mégadonnées avec PySpark
Instructions
- Créez un RDD appelé
baseRDD
qui lit les lignes defile_path
. - Transformez le
baseRDD
en une longue liste de mots et créez un nouveausplitRDD
. - Comptez le nombre total de mots dans
splitRDD
.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Create a baseRDD from the file path
baseRDD = sc.____(file_path)
# Split the lines of baseRDD into words
splitRDD = baseRDD.____(lambda x: x.split())
# Count the total number of words
print("Total number of words in splitRDD:", splitRDD.____())