Verwenden von Delta Lake in einem SQL-Pool

Abgeschlossen

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.