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 !
Partitionner des fichiers de données
Technique d’optimisation qui permet à Spark d’obtenir les meilleures performances sur les nœuds Worker.
Partitionner le fichier de sortie
Pour enregistrer un dataframe en tant que jeu de fichiers partitionné, utilisez la méthode partitionBy lors de l’écriture des données
Les noms de dossiers générés lors du partitionnement d’un dataframe incluent le nom et la valeur de la colonne de partitionnement au format colonne=valeur.
Filtrer des fichiers Parquet dans une requête
Les colonnes de partitionnement spécifiées dans le chemin de fichier sont omises dans le dataframe résultant.
La bibliothèque SparkSQL vous permet aussi d’utiliser SQL comme méthode pour travailler avec des données.
Les tables sont des abstractions de métadonnées sur des fichiers. Les données ne sont pas stockées dans une table relationnelle, mais la table fournit une couche relationnelle sur les fichiers du lac de données.
Créer des tables et des vues
Enregistre un dataframe (chargé depuis des fichiers CSV) sous la forme d’une table externe nommée sales_orders. Les fichiers sont stockés dans le dossier /sales_orders_table du lac de données :
Les définitions de table dans Spark sont stockées dans le metastore, une couche de métadonnées qui encapsule les abstractions relationnelles sur les fichiers.
Les tables externessont des tables relationnelles du metastore qui référencent des fichiers à un emplacement du lac de données que vous spécifiez.
Vous pouvez accéder à ces données :
en interrogeant la table
en lisant les fichiers directement à partir du lac de données
Les tables externes sont « faiblement liées » aux fichiers sous-jacents. La suppression de la table ne supprime pas les fichiers. Utiliser Spark pour effectuer le gros travail de transformation, puis d’enregistrer les données dans le lac. Une fois cette opération effectuée, vous pouvez supprimer la table.
Vous pouvez aussi définir des tables managées, pour lesquelles les fichiers de données sous-jacents sont stockés à un emplacement de stockage géré en interne associé au metastore. Les tables managées sont « étroitement liées » aux fichiers et la suppression d’une table managée supprime les fichiers associés.
Utiliser SQL pour interroger et transformer les données
# Crée des colonnées dérivées
sql_transform = spark.sql("SELECT *, YEAR(OrderDate) AS Year, MONTH(OrderDate) AS Month FROM sales_orders")