Delen via


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

Belangrijk

Streamingtabellen die zijn gemaakt in Databricks SQL worden ondersteund door een serverloze DLT-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:

Rekenvereisten:

U moet een van de volgende handelingen gebruiken:

  • Een SQL Warehouse dat gebruikmaakt van het Current kanaal.
  • Compute met de standaardtoegangsmodus (voorheen modus voor gedeelde toegang) in Databricks Runtime 13.3 LTS of hoger.
  • Compute met toegewezen toegangsmodus (voorheen modus voor toegang van één gebruiker) in Databricks Runtime 15.4 LTS of hoger.

    In Databricks Runtime 15.3 en lager kunt u geen toegewezen rekenkracht gebruiken om streamingtabellen op te vragen die eigendom zijn van andere gebruikers. U kunt toegewezen rekenkracht 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 ondersteunen query's op door DLT gegenereerde tabellen op toegewezen rekenkracht, 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 compute- omdat de functionaliteit voor gegevensfiltering die door DLT gegenereerde tabellen ondersteunt, wordt uitgevoerd op serverloze berekeningen. Er kunnen kosten in rekening worden gebracht voor serverloze rekenresources wanneer u toegewezen berekeningen gebruikt om gegevensfilterbewerkingen uit te voeren. Zie Gedetailleerd toegangsbeheer voor toegewezen rekenkracht (voorheen 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

  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 tabelwaardefunctievoor 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>')

Stel het runtimekanaal in

Streamingtabellen die zijn gemaakt met BEHULP van SQL Warehouses, worden automatisch vernieuwd met behulp van een DLT-pijplijn. DLT-pijplijnen maken standaard gebruik van de runtime in het current-kanaal. Zie DLT-releaseopmerkingen 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 DLT-voorbeeldkanaal om nieuwe functies te testen door preview op te geven 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.

Wanneer u een streamingtabel CREATE of REFRESH, worden de updateprocessen uitgevoerd met behulp van een serverloze DLT-pijplijn. Elke streamingtabel die u definieert, heeft een gekoppelde DLT-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 DLT?.

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

Met de meest recente definitie worden alle gegevens die in de bron beschikbaar zijn opnieuw verwerkt. 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>' ]];

Voor voorbeelden van het vernieuwen van schemaquery's, zie ALTER STREAMING TABLE.

De status van een vernieuwing bijhouden

U kunt de status van een streamingtabelvernieuwing bekijken door de pijplijn te bekijken die de streamingtabel beheert in de DLT-gebruikersinterface of door de Vernieuwingsinformatie te bekijken die wordt geretourneerd door de opdracht DESCRIBE EXTENDED voor de streamingtabel.

DESCRIBE EXTENDED <table-name>

Streamingopname van Kafka

Zie read_kafka voor een voorbeeld van streamingopname vanuit Kafka.

Toegang verlenen aan gebruikers 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.

records definitief verwijderen uit een streamingtabel

Belangrijk

De ondersteuning voor de REORG-instructie met streamingtabellen bevindt zich in openbare preview.

Notitie

  • Voor het gebruik van een REORG-instructie met een streamingtabel is Databricks Runtime 15.4 en hoger vereist.
  • Hoewel u de instructie REORG met een streamingtabel kunt gebruiken, is deze alleen vereist bij het verwijderen van records uit een streamingtabel met verwijderingsvectoren ingeschakeld. De opdracht heeft geen effect wanneer deze wordt gebruikt met een streamingtabel zonder verwijderingsvectoren ingeschakeld.

Als u records fysiek wilt verwijderen uit de onderliggende opslag voor een streamingtabel waarvoor verwijderingsvectoren zijn ingeschakeld, zoals voor AVG-naleving, moet u aanvullende stappen uitvoeren om ervoor te zorgen dat een VACUUM bewerking wordt uitgevoerd op de gegevens van de streamingtabel.

In de volgende stappen worden deze stappen uitgebreider beschreven:

  1. Records bijwerken of records verwijderen uit de streamingtabel.
  2. Voer een REORG-instructie uit voor de streamingtabel en geef de parameter APPLY (PURGE) op. Bijvoorbeeld REORG TABLE <streaming-table-name> APPLY (PURGE);.
  3. Wacht tot de gegevensretentieperiode van de streamingtabel is verstreken. De standaardperiode voor gegevensretentie is zeven dagen, maar kan worden geconfigureerd met de eigenschap delta.deletedFileRetentionDuration tabel. Zie Gegevensretentie configureren voor tijdreis-query's.
  4. REFRESH de streaming-tabel. Zie Een streamingtabel vernieuwen met behulp van een DLT-pijplijn. Binnen 24 uur na de REFRESH bewerking worden DLT-onderhoudstaken, inclusief de VACUUM bewerking die nodig is om ervoor te zorgen dat records permanent worden verwijderd, automatisch uitgevoerd. Zie Onderhoudstaken die worden uitgevoerd door DLT-.

Query-uitvoeringen bewaken door middel van querygeschiedenis

U kunt de pagina querygeschiedenis gebruiken voor toegang tot querydetails en queryprofielen waarmee u slecht presterende query's en knelpunten in de DLT-pijplijn kunt identificeren die worden gebruikt om de updates van 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 Azure Databricks Previews beheren.

Alle instructies met betrekking tot streamingtabellen worden weergegeven in de querygeschiedenis. U kunt de -verklaring vervolgkeuzelijst gebruiken om een opdracht te selecteren en de gerelateerde query's te bekijken. Alle CREATE instructies worden gevolgd door een REFRESH instructie die asynchroon wordt uitgevoerd op een DLT-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:

  1. Klik Geschiedenispictogram in de linkerzijbalk om de Querygeschiedenis-interface te openen.
  2. Selecteer het selectievakje REFRESH in het vervolgkeuzemenu van de Statement-filter.
  3. Klik op de naam van de query om overzichtsdetails weer te geven, zoals de duur van de query en geaggregeerde metrieken.
  4. Klik op Queryprofiel weergeven om het queryprofiel te openen. Zie Het queryprofiel voor meer informatie over het navigeren in het queryprofiel.
  5. 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.

Aanvullende bronnen