Sélection
La variante Spark de la méthode SELECT de SQL est la méthode .select(). Cette méthode accepte 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 (un pour chaque colonne), soit un objet colonne (en utilisant la syntaxe df.colName). Lorsque vous transmettez un objet colonne, vous pouvez effectuer des opérations telles que l'addition ou la soustraction sur la colonne afin de modifier les données qu'elle contient, de manière similaire à ce qui se fait dans .withColumn().
La différence entre les méthodes .select() et .withColumn() réside dans le fait que .select() renvoie uniquement les colonnes que vous spécifiez, 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 avoir à manipuler des données supplémentaires pendant le traitement. Dans ce cas, il convient d'utiliser .select() et non .withColumn().
Veuillez noter qu'une session Spark intitulée spark est déjà présente dans votre espace de travail, ainsi que le Spark DataFrame flights.
Cet exercice fait partie du cours
<cours>Principes fondamentaux de PySpark</cours>Instructions de l’exercice
- Veuillez sélectionner les colonnes
"tailnum","origin"et"dest"à partir deflightsen transmettant les noms des colonnes sous forme de chaînes. Enregistrez cela sousselected1. - Veuillez sélectionner les colonnes
"origin","dest"et"carrier"à l'aide de la syntaxedf.colName, puis filtrer le résultat à l'aide des deux filtres déjà définis pour vous (filterAetfilterB) afin de ne conserver que les vols de SEA à PDX. Enregistrez cela sousselected2.
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(____)