Gegevens laden met behulp van streamingtabellen in Databricks SQL

Belangrijk

Deze functie is beschikbaar als openbare preview. Als u zich wilt registreren voor toegang, vult u dit formulier in.

Databricks raadt het gebruik van streamingtabellen aan om gegevens op te nemen met Databricks SQL. Een streamingtabel is een beheerde Unity Catalog-tabel met extra ondersteuning voor streaming of incrementele gegevensverwerking. Er wordt automatisch een DLT-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.

Voordat u begint

Voordat u begint, controleert u of u het volgende hebt:

  • 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.

  • Een SQL Warehouse dat gebruikmaakt van het Current kanaal.

  • Als u query's wilt uitvoeren op streamingtabellen die zijn gemaakt door een Delta Live Tables-pijplijn, moet u een gedeelde berekening gebruiken met Databricks Runtime 13.3 LTS en hoger of een SQL Warehouse. Streamingtabellen die zijn gemaakt in een pijplijn met Unity Catalog kunnen niet worden opgevraagd vanuit toegewezen of geen isolatieclusters.

  • 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.

  • 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

  1. Klik in de zijbalk van uw werkruimte op Query's en klik vervolgens op Query maken.

  2. Selecteer in de query-editor een SQL-warehouse dat het Current kanaal in de vervolgkeuzelijst gebruikt.

  3. 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>')

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.

CREATE bewerkingen voor streamingtabellen maken gebruik van een Databricks SQL Warehouse voor het maken en laden van gegevens in de streamingtabel. REFRESH bewerkingen voor streamingtabellen maken gebruik van Delta Live Tables (DLT). Er wordt automatisch een DLT-pijplijn gemaakt voor elke streamingtabel. Wanneer een streamingtabel wordt vernieuwd, wordt er een update naar de DLT-pijplijn gestart om de vernieuwing te verwerken.

Nadat u de REFRESH opdracht 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.

Zie Wat is Delta Live Tables?

Alleen nieuwe gegevens opnemen

De functie leest standaard read_files alle bestaande gegevens in de bronmap tijdens het maken van de tabel en verwerkt vervolgens zojuist 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 includeExistingFiles optie 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 opdracht Voor de DESCRIBE EXTENDED streamingtabel geretourneerde vernieuwingsgegevens 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.

Beperkingen

  • Databricks SQL-streamingtabellen worden niet ondersteund in de regio's VS - zuid-centraal en VS - west 2.

Aanvullende bronnen