Delta Lake gebruiken in een SQL-pool
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.