Verwenden von Delta Lake in einem SQL-Pool
Delta Lake ist als transaktionale, relationale Speicherebene für Apache Spark konzipiert, einschließlich Spark-Pools in Azure Synapse Analytics. Azure Synapse Analytics enthält jedoch auch eine serverlose SQL-Poolruntime, die es Datenanalysten und -technikern ermöglicht, SQL-Abfragen auf Daten in einem Data Lake oder einer relationalen Datenbank anzuwenden.
Hinweis
Sie können Daten in Delta Lake-Tabellen in einem serverlosen SQL-Pool nur abfragen. Sie können Daten weder aktualisieren, einfügen noch löschen.
Abfragen von Dateien im Deltaformat mit OPENROWSET
Der serverlose SQL-Pool in Azure Synapse Analytics unterstützt das Lesen von Dateien im Deltaformat, sodass Sie den SQL-Pool zur Abfrage von Delta Lake-Tabellen nutzen können. Dieser Ansatz kann in Szenarien nützlich sein, in denen Sie Spark und Delta-Tabellen verwenden möchten, um große Datenmengen zu verarbeiten, aber den SQL-Pool einsetzen möchten, um Abfragen für die Berichterstellung und Analysen der verarbeiteten Daten auszuführen.
Im folgenden Beispiel liest die SQL-Abfrage SELECT
mit der Funktion OPENROWSET
Daten im Deltaformat.
SELECT *
FROM
OPENROWSET(
BULK 'https://mystore.dfs.core.windows.net/files/delta/mytable/',
FORMAT = 'DELTA'
) AS deltadata
Sie könnten diese Abfrage in einem serverlosen SQL-Pool ausführen, um die neuesten Daten aus der Delta Lake-Tabelle abzurufen, die am angegebenen Dateispeicherort gespeichert ist.
Sie können auch eine Datenbank erstellen und eine Datenquelle hinzufügen, die den Speicherort Ihrer Delta Lake-Datendateien kapselt, wie in diesem Beispiel gezeigt:
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;
Hinweis
Wenn Sie mit im Parquet-Format gespeicherten Delta Lake-Daten arbeiten, ist es im Allgemeinen am besten, eine Datenbank mit einer UTF-8-basierten Sortierung zu erstellen, um Zeichenfolgenkompatibilität zu gewährleisten.
Abfragen von Katalogtabellen
Der serverlose SQL-Pool in Azure Synapse Analytics hat freigegebenen Zugriff auf Datenbanken im Spark-Metastore, sodass Sie mit Spark SQL erstellte Katalogtabellen abfragen können. Im folgenden Beispiel fragt eine SQL-Abfrage in einem serverlosen SQL-Pool eine Katalogtabelle mit Delta Lake-Daten ab:
-- 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;
Tipp
Weitere Informationen zum Verwenden von Delta-Tabellen in einem serverlosen SQL-Pool finden Sie in der Azure Synapse Analytics-Dokumentation unter Abfragen von Delta Lake-Dateien mithilfe eines serverlosen SQL-Pools in Azure Synapse Analytics.