Utiliser des données à l’aide de Spark SQL
L’API Dataframe fait partie d’une bibliothèque Spark appelée Spark SQL, qui permet aux analystes Données d’utiliser des expressions SQL pour interroger et manipuler des données.
Création d’objets de base de données dans le catalogue Spark
Le catalogue Spark est un metastore pour les objets de données relationnelles tels que les vues et les tables. Le runtime Spark peut utiliser le catalogue pour intégrer de façon fluide le code écrit dans n’importe quel langage pris en charge par Spark avec des expressions SQL qui peuvent être plus naturelles pour certains analystes Données ou développeurs.
L’une des méthodes les plus simples pour rendre les données d’un dataframe disponibles pour pouvoir les interroger dans le catalogue Spark consiste à créer une vue temporaire, comme illustré dans l’exemple de code suivant :
df.createOrReplaceTempView("products_view")
Une vue est temporaire, ce qui signifie qu’elle est automatiquement supprimée à la fin de la session active. Vous pouvez également créer des tables persistantes dans le catalogue pour définir une base de données pouvant être interrogée à l’aide de Spark SQL.
Les tables sont des structures de métadonnées qui stockent leurs données sous-jacentes dans l’emplacement de stockage associé au catalogue. Dans Microsoft Fabric, les données des tables managées sont stockées dans l’emplacement de stockage Tables affiché dans votre lac de données, et toutes les tables créées à l’aide de Spark y sont listées.
Vous pouvez créer une table vide à l’aide de la méthode spark.catalog.createTable
, ou vous pouvez enregistrer un dataframe en tant que table à l’aide de sa méthode saveAsTable
. La suppression d’une table managée supprime également ses données sous-jacentes.
Par exemple, le code suivant enregistre un dataframe en tant que nouvelle table nommée products :
df.write.format("delta").saveAsTable("products")
Notes
Le catalogue Spark prend en charge les tables basées sur des fichiers dans différents formats. Le format préféré dans Microsoft Fabric est delta, qui est le format d’une technologie de données relationnelles sur Spark nommée Delta Lake. Les tables Delta prennent en charge des fonctionnalités couramment présentes dans les systèmes de base de données relationnelles, notamment les transactions, le versioning et la prise en charge des données de streaming.
En outre, vous pouvez créer des tables externes à l’aide de la méthode spark.catalog.createExternalTable
. Les tables externes définissent des métadonnées dans le catalogue, mais obtiennent leurs données sous-jacentes à partir d’un emplacement de stockage externe, généralement un dossier dans une zone de stockage Files d’un lakehouse. La suppression d’une table externe ne supprime pas les données sous-jacentes.
Conseil
Vous pouvez appliquer la même technique de partitionnement aux tables Delta Lake que celle décrite pour les fichiers Parquet dans l’unité précédente. Le partitionnement des tables peut améliorer les performances lors de leur interrogation.
Utilisation de l’API Spark SQL pour interroger des données
Vous pouvez utiliser l’API Spark SQL dans le code écrit dans n’importe quel langage pour interroger les données du catalogue. Par exemple, le code PySpark suivant utilise une requête SQL pour retourner des données de la table products en tant que dataframe.
bikes_df = spark.sql("SELECT ProductID, ProductName, ListPrice \
FROM products \
WHERE Category IN ('Mountain Bikes', 'Road Bikes')")
display(bikes_df)
Les résultats de l’exemple de code ressembleraient au tableau suivant :
ProductID | ProductName | ListPrice |
---|---|---|
771 | Mountain-100 Silver, 38 | 3399.9900 |
839 | Road-750 Noir, 52 | 539.9900 |
... | ... | ... |
Utilisation du code SQL
L’exemple précédent a montré comment utiliser l’API Spark SQL pour incorporer des expressions SQL dans le code Spark. Dans un notebook, vous pouvez également utiliser la commande magic %%sql
pour exécuter le code SQL qui interroge les objets du catalogue, comme suit :
%%sql
SELECT Category, COUNT(ProductID) AS ProductCount
FROM products
GROUP BY Category
ORDER BY Category
L’exemple de code SQL retourne un jeu de résultats qui s’affiche automatiquement dans le notebook sous forme de table :
Catégorie | ProductCount |
---|---|
Cuissards | 3 |
Porte-vélos | 1 |
Supports à vélos | 1 |
... | ... |