Modifier et enregistrer des trames de données

Effectué

Apache Spark fournit l’objet dataframe comme structure principale pour l’utilisation des données. Vous pouvez utiliser des dataframes pour interroger et transformer des données, et 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 d’accès et éventuellement le schéma des données à lire. Par exemple, le code suivant charge les données de tous les fichiers .csv dans le dossier commande 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 de données

Après avoir chargé les données sources dans un dataframe, vous pouvez utiliser les méthodes de l’objet dataframe et les fonctions Spark pour les transformer. Les opérations classiques sur un dataframe sont les suivantes :

  • Filtrage de lignes et de colonnes
  • Renommage des colonnes
  • Création de nouvelles colonnes, souvent dérivées de celles existantes
  • Remplacement de la valeur 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 la puissance totale de la bibliothèque Spark SQL pour transformer les données en filtrant des lignes, en dérivant, en supprimant, en renommant des colonnes et en appliquant d’autres modifications de données requises.

Enregistrer les données transformées

Une fois que votre dataFrame est dans la structure requise, vous pouvez enregistrer les résultats dans 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!")

Remarque

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 !