Gegevens laden met behulp van streamingtabellen in Databricks SQL
Databricks raadt het gebruik van streamingtabellen aan om gegevens op te nemen met Databricks SQL. Een streamingtabel is een tabel die is geregistreerd bij Unity Catalog met extra ondersteuning voor streaming of incrementele gegevensverwerking. Er wordt automatisch een Delta Live Tables-pijplijn gemaakt voor elke streamingtabel. U kunt streamingtabellen gebruiken voor het laden van incrementele gegevens vanuit Kafka en cloudobjectopslag.
In dit artikel wordt gedemonstreerd hoe u streamingtabellen gebruikt om gegevens te laden uit de opslag van cloudobjecten die zijn geconfigureerd als een Unity Catalog-volume (aanbevolen) of externe locatie.
Belangrijk
Streamingtabellen die zijn gemaakt in Databricks SQL, worden ondersteund door een serverloze Delta Live Tables-pijplijn. Uw werkruimte moet serverloze pijplijnen ondersteunen om deze functionaliteit te kunnen gebruiken.
Voordat u begint
Voordat u begint, moet u aan de volgende vereisten voldoen.
Vereisten voor werkruimte:
- Een Azure Databricks-account waarvoor serverloos is ingeschakeld. Zie Serverloze SQL-warehouses inschakelen voor meer informatie.
- Een werkruimte waarvoor Unity Catalog is ingeschakeld. Zie Unity Catalog instellen en beheren voor meer informatie.
Rekenvereisten:
U moet een van de volgende handelingen gebruiken:
Een SQL Warehouse dat gebruikmaakt van het
Current
kanaal.Compute met de modus voor gedeelde toegang op Databricks Runtime 13.3 LTS of hoger.
Compute met de modus voor toegang van één gebruiker in Databricks Runtime 15.4 LTS of hoger.
In Databricks Runtime 15.3 en lager kunt u geen rekenkracht van één gebruiker gebruiken om query's uit te voeren op streamingtabellen die eigendom zijn van andere gebruikers. U kunt berekeningen van één gebruiker alleen gebruiken voor Databricks Runtime 15.3 en lager als u eigenaar bent van de streamingtabel. De maker van de tabel is de eigenaar.
Databricks Runtime 15.4 LTS en hoger bieden ondersteuning voor query's op door Delta Live Tables gegenereerde tabellen op rekenkracht van één gebruiker, ongeacht het eigendom van de tabel. Als u wilt profiteren van het filteren van gegevens in Databricks Runtime 15.4 LTS en hoger, moet u controleren of uw werkruimte is ingeschakeld voor serverloze berekeningen , omdat de functionaliteit voor gegevensfiltering die door Delta Live Tabellen gegenereerde tabellen ondersteunt, wordt uitgevoerd op serverloze berekeningen. Er kunnen kosten in rekening worden gebracht voor serverloze rekenresources wanneer u rekenkracht van één gebruiker gebruikt om gegevensfilterbewerkingen uit te voeren. Zie Gedetailleerd toegangsbeheer voor rekenkracht van één gebruiker.
Vereisten voor machtigingen:
- De
READ FILES
bevoegdheid op een externe locatie van de Unity Catalog. Zie Een externe locatie maken om cloudopslag te verbinden met Azure Databricks voor meer informatie. - De
USE CATALOG
bevoegdheid voor de catalogus waarin u de streamingtabel maakt. - De
USE SCHEMA
bevoegdheid voor het schema waarin u de streamingtabel maakt. - De
CREATE TABLE
bevoegdheid voor het schema waarin u de streamingtabel maakt.
Andere vereisten:
Het pad naar de brongegevens.
Voorbeeld van volumepad:
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
Voorbeeld van extern locatiepad:
abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis
Notitie
In dit artikel wordt ervan uitgegaan dat de gegevens die u wilt laden zich in een cloudopslaglocatie bevinden die overeenkomt met een Unity Catalog-volume of externe locatie waartoe u toegang hebt.
Brongegevens detecteren en bekijken
Klik in de zijbalk van uw werkruimte op Query's en klik vervolgens op Query maken.
Selecteer in de query-editor een SQL-warehouse dat het
Current
kanaal in de vervolgkeuzelijst gebruikt.Plak het volgende in de editor, vervang waarden tussen punthaken (
<>
) voor de informatie die de brongegevens identificeert en klik vervolgens op Uitvoeren.Notitie
Er kunnen schemadeductiefouten optreden bij het uitvoeren van de
read_files
tabelwaardefunctie als de standaardwaarden voor de functie uw gegevens niet kunnen parseren. U moet bijvoorbeeld de modus met meerdere regels configureren voor CSV- of JSON-bestanden met meerdere regels. Zie read_files functie met tabelwaarden voor een lijst met parseropties./* Discover your data in a volume */ LIST "/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>" /* Preview your data in a volume */ SELECT * FROM read_files("/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>") LIMIT 10 /* Discover your data in an external location */ LIST "abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>" /* Preview your data */ SELECT * FROM read_files("abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>") LIMIT 10
Gegevens laden in een streamingtabel
Als u een streamingtabel wilt maken op basis van gegevens in de opslag van cloudobjecten, plakt u het volgende in de query-editor en klikt u op Uitvoeren:
/* Load data from a volume */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>')
/* Load data from an external location */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>')
Het runtimekanaal instellen
Streamingtabellen die zijn gemaakt met BEHULP van SQL Warehouses, worden automatisch vernieuwd met behulp van een Delta Live Tables-pijplijn. Delta Live Tables-pijplijnen maken standaard gebruik van de runtime in het current
kanaal. Zie releaseopmerkingen voor Delta Live Tables en het release-upgradeproces voor meer informatie over het releaseproces.
Databricks raadt het gebruik van het current
kanaal aan voor productieworkloads. Nieuwe functies worden voor het eerst uitgebracht voor het preview
kanaal. U kunt een pijplijn instellen op het kanaal Delta Live Tables om nieuwe functies te testen door deze op te geven preview
als een tabeleigenschap. U kunt deze eigenschap opgeven wanneer u de tabel maakt of nadat de tabel is gemaakt met behulp van een ALTER-instructie.
In het volgende codevoorbeeld ziet u hoe u het kanaal instelt op preview in een CREATE-instructie:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
Een streamingtabel vernieuwen met behulp van een DLT-pijplijn
In deze sectie worden patronen beschreven voor het vernieuwen van een streamingtabel met de meest recente gegevens die beschikbaar zijn vanuit de bronnen die in de query zijn gedefinieerd.
Als u een streamingtabel met CREATE
of REFRESH
bewerkt, worden de updateprocessen uitgevoerd met behulp van een serverloze Delta Live Tables-pijplijn. Elke streamingtabel die u definieert, heeft een bijbehorende Delta Live Tables-pijplijn.
Nadat u de opdracht REFRESH
hebt uitgevoerd, wordt de DLT-pijplijnkoppeling geretourneerd. U kunt de DLT-pijplijnkoppeling gebruiken om de status van de vernieuwing te controleren.
Notitie
Alleen de eigenaar van de tabel kan een streamingtabel vernieuwen om de meest recente gegevens op te halen. De gebruiker die de tabel maakt, is de eigenaar en de eigenaar kan niet worden gewijzigd. Wellicht moet u de streamingtabel vernieuwen voordat u queries over tijdreizen uitvoert.
Zie Wat is Delta Live Tables?.
Alleen nieuwe gegevens opnemen
De functie read_files
leest standaard alle bestaande gegevens in de bronmap tijdens het maken van de tabel en verwerkt vervolgens nieuwe binnenkomende records bij elke vernieuwing.
Als u wilt voorkomen dat gegevens worden opgenomen die al aanwezig zijn in de bronmap op het moment dat de tabel is gemaakt, stelt u de optie includeExistingFiles
in op false
. Dit betekent dat alleen gegevens die in de map binnenkomen nadat de tabel is gemaakt, zijn verwerkt. Voorbeeld:
CREATE OR REFRESH STREAMING TABLE my_bronze_table
AS SELECT *
FROM STREAM read_files(
'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
includeExistingFiles => false)
Een streamingtabel volledig vernieuwen
Alle gegevens die beschikbaar zijn in de bron, worden opnieuw verwerkt met de meest recente definitie. Het is niet raadzaam om volledige vernieuwingen aan te roepen voor bronnen die de volledige geschiedenis van de gegevens niet behouden of korte bewaarperioden hebben, zoals Kafka, omdat de volledige vernieuwing de bestaande gegevens afkapt. Mogelijk kunt u oude gegevens niet herstellen als de gegevens niet meer beschikbaar zijn in de bron.
Voorbeeld:
REFRESH STREAMING TABLE my_bronze_table FULL
Een streamingtabel plannen voor automatisch vernieuwen
Als u een streamingtabel wilt configureren om automatisch te vernieuwen op basis van een gedefinieerd schema, plakt u het volgende in de query-editor en klikt u vervolgens op Uitvoeren:
ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
CRON '<cron-string>'
[ AT TIME ZONE '<timezone-id>' ]];
Zie ALTER STREAMING TABLE voor bijvoorbeeld vernieuwingsschemaquery's.
De status van een vernieuwing bijhouden
U kunt de status van een streamingtabelvernieuwing weergeven door de pijplijn weer te geven die de streamingtabel beheert in de gebruikersinterface van Delta Live Tables of door de DESCRIBE EXTENDED
weer te geven.
DESCRIBE EXTENDED <table-name>
Streamingopname van Kafka
Zie read_kafka voor een voorbeeld van streamingopname vanuit Kafka.
Gebruikers toegang verlenen tot een streamingtabel
Als u gebruikers de SELECT
bevoegdheid wilt verlenen voor de streamingtabel, zodat ze er query's op kunnen uitvoeren, plakt u het volgende in de queryeditor en klikt u vervolgens op Uitvoeren:
GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>
Zie Unity Catalog-bevoegdheden en beveiligbare objecten voor meer informatie over het verlenen van bevoegdheden voor unity-catalogusobjecten.
Uitvoeringen bewaken met querygeschiedenis
U kunt de pagina querygeschiedenis gebruiken om toegang te krijgen tot querydetails en queryprofielen waarmee u slecht presterende query's en knelpunten in de Delta Live Tables-pijplijn kunt identificeren die worden gebruikt om updates voor de streamingtabel uit te voeren. Zie Querygeschiedenis en Queryprofiel voor een overzicht van het soort informatie dat beschikbaar is in querygeschiedenissen en queryprofielen.
Belangrijk
Deze functie is beschikbaar als openbare preview. Werkruimtebeheerders kunnen deze functie inschakelen vanaf de pagina Previews . Zie Previews van Azure Databricks beheren.
Alle instructies met betrekking tot streamingtabellen worden weergegeven in de querygeschiedenis. U kunt het vervolgkeuzefilter Instructie gebruiken om een opdracht te selecteren en de gerelateerde query's te inspecteren. Alle CREATE
instructies worden gevolgd door een REFRESH
instructie die asynchroon wordt uitgevoerd op een Delta Live Tables-pijplijn. De REFRESH
instructies bevatten doorgaans gedetailleerde queryplannen die inzicht bieden in het optimaliseren van de prestaties.
Gebruik de volgende stappen om toegang te krijgen tot REFRESH
instructies in de gebruikersinterface voor querygeschiedenis:
- Klik in de linkerzijbalk om de gebruikersinterface voor querygeschiedenis te openen.
- Schakel het selectievakje VERNIEUWEN in de vervolgkeuzelijst Instructie in.
- Klik op de naam van de query-instructie om overzichtsdetails weer te geven, zoals de duur van de query en geaggregeerde metrische gegevens.
- Klik op Queryprofiel weergeven om het queryprofiel te openen. Zie Het queryprofiel voor meer informatie over het navigeren in het queryprofiel.
- U kunt eventueel de koppelingen in de sectie Querybron gebruiken om de gerelateerde query of pijplijn te openen.
U kunt ook toegang krijgen tot querygegevens met behulp van koppelingen in de SQL-editor of vanuit een notebook dat is gekoppeld aan een SQL-warehouse.
Notitie
Uw streamingtabel moet worden geconfigureerd voor uitvoering met behulp van het preview-kanaal . Zie Het runtime-kanaal instellen.