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

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

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

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:

  1. Klik Pictogram Geschiedenis in de linkerzijbalk om de gebruikersinterface voor querygeschiedenis te openen.
  2. Schakel het selectievakje VERNIEUWEN in de vervolgkeuzelijst Instructie in.
  3. Klik op de naam van de query-instructie om overzichtsdetails weer te geven, zoals de duur van de query en geaggregeerde metrische gegevens.
  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.

Notitie

Uw streamingtabel moet worden geconfigureerd voor uitvoering met behulp van het preview-kanaal . Zie Het runtime-kanaal instellen.

Aanvullende bronnen