Sélection
La variante Spark de SELECT en SQL est la méthode .select(). Cette méthode accepte plusieurs arguments — un par colonne à sélectionner. Ces arguments peuvent être soit le nom de la colonne sous forme de chaîne (un par colonne), soit un objet colonne (avec la syntaxe df.colName). Lorsque vous passez un objet colonne, vous pouvez effectuer des opérations comme l'addition ou la soustraction sur la colonne pour modifier les données qu'elle contient, un peu comme avec .withColumn().
La différence entre les méthodes .select() et .withColumn() est que .select() ne renvoie que les colonnes que vous précisez, tandis que .withColumn() renvoie toutes les colonnes du DataFrame en plus de celle que vous avez définie. Il est souvent judicieux de retirer au départ les colonnes dont vous n'avez pas besoin afin de ne pas traîner de données inutiles pendant votre transformation. Dans ce cas, vous utiliseriez .select() et non .withColumn().
Rappelez-vous qu'une SparkSession appelée spark est déjà disponible dans votre espace de travail, ainsi que le DataFrame Spark flights.
Cette activité fait partie du cours
Fondements de PySpark
Instructions de l’exercice
- Sélectionnez les colonnes
"tailnum","origin"et"dest"deflightsen passant les noms de colonnes comme chaînes. Enregistrez le résultat dansselected1. - Sélectionnez les colonnes
"origin","dest"et"carrier"à l'aide de la syntaxedf.colName, puis filtrez le résultat en appliquant les deux filtres déjà définis pour vous (filterAetfilterB) afin de ne conserver que les vols de SEA vers PDX. Enregistrez le résultat dansselected2.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Select the first set of columns
selected1 = flights.select("____", "____", "____")
# Select the second set of columns
temp = flights.select(____.____, ____.____, ____.____)
# Define first filter
filterA = flights.origin == "SEA"
# Define second filter
filterB = flights.dest == "PDX"
# Filter the data, first by filterA then by filterB
selected2 = temp.filter(____).filter(____)