Modifier et enregistrer des dataframes
Apache Spark fournit l’objet dataframe comme structure principale pour travailler avec des données. Vous pouvez utiliser des dataframes pour interroger et transformer des données, et pour conserver les résultats dans un lac de données. Pour charger des données dans un dataframe, vous utilisez la fonction spark.read, en spécifiant le format de fichier, le chemin et éventuellement le schéma des données à lire. Par exemple, le code suivant charge les données de tous les fichiers .csv du dossier orders dans un dataframe nommé order_details, puis affiche les cinq premiers enregistrements.
order_details = spark.read.csv('/orders/*.csv', header=True, inferSchema=True)
display(order_details.limit(5))
Transformer la structure des données
Après avoir chargé les données sources dans un dataframe, vous pouvez utiliser les méthodes et les fonctions Spark de l’objet dataframe pour les transformer. Les opérations classiques sur un dataframe sont les suivantes :
- Filtrage des lignes et des colonnes
- Renommage des colonnes
- Création de nouvelles colonnes, souvent dérivées de colonnes existantes
- Remplacement de valeurs null ou d’autres valeurs
Dans l’exemple suivant, le code utilise la fonction split
pour séparer les valeurs de la colonne CustomerName en deux nouvelles colonnes nommées FirstName et LastName. Ensuite, il utilise la méthode drop
pour supprimer la colonne CustomerName d’origine.
from pyspark.sql.functions import split, col
# Create the new FirstName and LastName fields
transformed_df = order_details.withColumn("FirstName", split(col("CustomerName"), " ").getItem(0)).withColumn("LastName", split(col("CustomerName"), " ").getItem(1))
# Remove the CustomerName field
transformed_df = transformed_df.drop("CustomerName")
display(transformed_df.limit(5))
Vous pouvez utiliser toute la puissance de la bibliothèque Spark SQL pour transformer les données en filtrant des lignes, en dérivant, en supprimant et en renommant des colonnes, et en appliquant d’autres modifications nécessaires aux données.
Enregistrer les données transformées
Une fois que votre dataframe a la structure appropriée, vous pouvez enregistrer les résultats selon un format pris en charge dans votre lac de données.
L’exemple de code suivant enregistre le dataframe dans un fichier Parquet dans le lac de données, en remplaçant l’éventuel fichier qui porte le même nom.
transformed_df.write.mode("overwrite").parquet('/transformed_data/orders.parquet')
print ("Transformed data saved!")
Notes
Le format Parquet est généralement préféré pour les fichiers de données que vous allez utiliser pour une analyse plus approfondie ou une ingestion dans un magasin analytique. Parquet est un format très efficace qui est pris en charge par la plupart des systèmes d’analytique de données à grande échelle. Parfois, votre besoin de transformation de données peut en fait simplement consister à convertir des données d’un autre format (comme CSV) vers Parquet !