Utiliser Delta Lake dans un pool SQL
Delta Lake est conçu comme une couche de stockage transactionnelle et relationnelle pour Apache Spark ; y compris les pools Spark dans Azure Synapse Analytics. Toutefois, Azure Synapse Analytics inclut également un runtime de pool serverless SQL qui permet aux analystes de données et aux ingénieurs d’exécuter des requêtes SQL sur des données dans un lac de données ou une base de données relationnelle.
Notes
Vous pouvez seulement interroger des données à partir de tables Delta Lake dans un pool SQL serverless ; vous ne pouvez pas mettre à jour, insérer ou supprimer des données.
Interrogation de fichiers de format delta avec OPENROWSET
Le pool SQL serverless dans Azure Synapse Analytics inclut la prise en charge de la lecture des fichiers de format delta, ce qui vous permet d’utiliser le pool SQL pour interroger des tables Delta Lake. Cette approche peut être utile dans les scénarios où vous souhaitez utiliser des tables Spark et Delta pour traiter de grandes quantités de données, mais utilisez le pool SQL pour exécuter des requêtes pour créer des rapports et analyser les données traitées.
Dans l’exemple suivant, une requête SQL SELECT
lit les données de format delta à l’aide de la fonction OPENROWSET
.
SELECT *
FROM
OPENROWSET(
BULK 'https://mystore.dfs.core.windows.net/files/delta/mytable/',
FORMAT = 'DELTA'
) AS deltadata
Vous pouvez exécuter cette requête dans un pool SQL serverless pour récupérer les données les plus récentes de la table Delta Lake stockée à l’emplacement de fichier spécifié.
Vous pouvez également créer une base de données et ajouter une source de données qui encapsule l’emplacement de vos fichiers de données Delta Lake, comme illustré dans cet exemple :
CREATE DATABASE MyDB
COLLATE Latin1_General_100_BIN2_UTF8;
GO;
USE MyDB;
GO
CREATE EXTERNAL DATA SOURCE DeltaLakeStore
WITH
(
LOCATION = 'https://mystore.dfs.core.windows.net/files/delta/'
);
GO
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'mytable',
DATA_SOURCE = 'DeltaLakeStore',
FORMAT = 'DELTA'
) as deltadata;
Notes
Lors de l’utilisation de données Delta Lake, stockées au format Parquet, il est généralement préférable de créer une base de données avec un classement basé sur UTF-8 afin de garantir la compatibilité des chaînes.
Interrogation de tables de catalogue
Le pool SQL serverless dans Azure Synapse Analytics a un accès partagé aux bases de données dans le metastore Spark. Vous pouvez donc interroger des tables de catalogue créées à l’aide de Spark SQL. Dans l’exemple suivant, une requête SQL dans un pool SQL serverless interroge une table de catalogue qui contient des données Delta Lake :
-- By default, Spark catalog tables are created in a database named "default"
-- If you created another database using Spark SQL, you can use it here
USE default;
SELECT * FROM MyDeltaTable;
Conseil
Pour plus d’informations sur l’utilisation de tables Delta à partir d’un pool SQL serverless, consultez Interroger des fichiers Delta Lake à l’aide d’un pool SQL serverless dans Azure Synapse Analytics dans la documentation Azure Synapse Analytics.