Delta Lake gebruiken in een SQL-pool

Voltooid

Delta Lake is ontworpen als een transactionele, relationele opslaglaag voor Apache Spark; inclusief Spark-pools in Azure Synapse Analytics. Azure Synapse Analytics bevat echter ook een serverloze SQL-poolruntime waarmee gegevensanalisten en technici SQL-query's kunnen uitvoeren op gegevens in een data lake of een relationele database.

Notitie

U kunt alleen query's uitvoeren op gegevens uit Delta Lake-tabellen in een serverloze SQL-pool. U kunt geen gegevens bijwerken, invoegen of verwijderen .

Query's uitvoeren op bestanden met delta-indeling met OPENROWSET

De serverloze SQL-pool in Azure Synapse Analytics bevat ondersteuning voor het lezen van delta-indelingsbestanden; zodat u de SQL-pool kunt gebruiken om query's uit te voeren op Delta Lake-tabellen. Deze benadering kan handig zijn in scenario's waarin u Spark- en Delta-tabellen wilt gebruiken om grote hoeveelheden gegevens te verwerken, maar de SQL-pool gebruiken om query's uit te voeren voor rapportage en analyse van de verwerkte gegevens.

In het volgende voorbeeld leest een SQL-query SELECT delta-indelingsgegevens met behulp van de OPENROWSET functie.

SELECT *
FROM
    OPENROWSET(
        BULK 'https://mystore.dfs.core.windows.net/files/delta/mytable/',
        FORMAT = 'DELTA'
    ) AS deltadata

U kunt deze query uitvoeren in een serverloze SQL-pool om de meest recente gegevens op te halen uit de Delta Lake-tabel die is opgeslagen op de opgegeven bestandslocatie.

U kunt ook een database maken en een gegevensbron toevoegen waarmee de locatie van uw Delta Lake-gegevensbestanden wordt ingekapseld, zoals wordt weergegeven in dit voorbeeld:

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;

Notitie

Wanneer u werkt met Delta Lake-gegevens, die zijn opgeslagen in parquet-indeling, is het over het algemeen het beste om een database te maken met een UTF-8-sortering om ervoor te zorgen dat tekenreekscompatibiliteit wordt gegarandeerd.

Query's uitvoeren op catalogustabellen

De serverloze SQL-pool in Azure Synapse Analytics heeft gedeelde toegang tot databases in de Spark-metastore, zodat u query's kunt uitvoeren op catalogustabellen die zijn gemaakt met Spark SQL. In het volgende voorbeeld wordt met een SQL-query in een serverloze SQL-pool een catalogustabel met Delta Lake-gegevens opgevraagd:

-- 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;

Tip

Zie Query Delta Lake-bestanden met behulp van een serverloze SQL-pool in Azure Synapse Analytics in de documentatie van Azure Synapse Analytics voor meer informatie over het gebruik van Delta-tabellen uit een serverloze SQL-pool.