Sélection
La variante Spark de la méthode SQL's SELECT
est la méthode .select()
. Cette méthode prend en compte plusieurs arguments, un pour chaque colonne que vous souhaitez sélectionner. Ces arguments peuvent être soit le nom de la colonne sous forme de chaîne (une pour chaque colonne), soit un objet colonne (en utilisant la syntaxe df.colName
). Lorsque vous passez un objet colonne, vous pouvez effectuer des opérations telles que l'addition ou la soustraction sur la colonne pour modifier les données qu'elle contient, tout comme à l'intérieur de .withColumn()
.
La différence entre les méthodes .select()
et .withColumn()
est que .select()
renvoie uniquement les colonnes que vous avez spécifiées, tandis que .withColumn()
renvoie toutes les colonnes du DataFrame en plus de celle que vous avez définie. Il est souvent judicieux de supprimer les colonnes dont vous n'avez pas besoin au début d'une opération afin de ne pas traîner de données supplémentaires pendant que vous manipulez les données. Dans ce cas, vous devez utiliser .select()
et non .withColumn()
.
Rappelez-vous qu'une SparkSession appelée spark
se trouve déjà dans votre espace de travail, ainsi que le DataFrame Spark flights
.
Cet exercice fait partie du cours
Introduction à PySpark
Instructions
- Sélectionnez les colonnes
"tailnum"
,"origin"
, et"dest"
à partir deflights
en transmettant les noms de colonnes sous forme de chaînes. Enregistrez ceci sousselected1
. - Sélectionnez les colonnes
"origin"
,"dest"
, et"carrier"
à l'aide de la syntaxedf.colName
, puis filtrez le résultat à l'aide des deux filtres déjà définis pour vous (filterA
etfilterB
) pour ne conserver que les vols de SEA à PDX. Enregistrez ceci sousselected2
.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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(____)