Läsa in data med hjälp av strömmande tabeller i Databricks SQL
Databricks rekommenderar att du använder strömmande tabeller för att mata in data med Databricks SQL. En strömningstabell är en tabell som är registrerad i Unity Catalog med extra stöd för direktuppspelning eller inkrementell databearbetning. En Delta Live Tables-pipeline skapas automatiskt för varje strömmande tabell. Du kan använda strömmande tabeller för inkrementell datainläsning från Kafka och molnobjektlagring.
Den här artikeln visar hur du använder strömmande tabeller för att läsa in data från molnobjektlagring som konfigurerats som en Unity Catalog-volym (rekommenderas) eller extern plats.
Kommentar
Information om hur du använder Delta Lake-tabeller som strömmande källor och mottagare finns i Delta table streaming reads and writes (Delta table streaming reads and writes).
Viktigt!
Strömmande tabeller som skapats i Databricks SQL backas upp av en serverlös Delta Live Tables-pipeline. Din arbetsyta måste ha stöd för serverlösa pipelines för att kunna använda den här funktionen.
Innan du börjar
Innan du börjar måste du uppfylla följande krav.
Krav för arbetsyta:
- Ett Azure Databricks-konto med serverlöst aktiverat. Mer information finns i Aktivera serverlösa SQL-lager.
- En arbetsyta med Unity Catalog aktiverat. Mer information finns i Konfigurera och hantera Unity Catalog.
Beräkningskrav:
Du måste använda något av följande:
Ett SQL-lager som använder
Current
kanalen.Beräkning med läget för delad åtkomst på Databricks Runtime 13.3 LTS eller senare.
Beräkning med åtkomstläge för en användare på Databricks Runtime 15.4 LTS eller senare.
På Databricks Runtime 15.3 och nedan kan du inte använda beräkning av enskilda användare för att köra frågor mot strömmande tabeller som ägs av andra användare. Du kan endast använda beräkning av en användare på Databricks Runtime 15.3 och lägre om du äger strömningstabellen. Skaparen av tabellen är ägare.
Databricks Runtime 15.4 LTS och senare stöder frågor på Delta Live Tables-genererade tabeller vid beräkning av enskilda användare, oavsett tabellägarskap. Om du vill dra nytta av datafiltreringen i Databricks Runtime 15.4 LTS och senare måste du bekräfta att arbetsytan är aktiverad för serverlös beräkning eftersom datafiltreringsfunktionerna som stöder Delta Live Tables-genererade tabeller körs på serverlös beräkning. Du kan debiteras för serverlösa beräkningsresurser när du använder beräkning av enskilda användare för att köra datafiltreringsåtgärder. Se Detaljerad åtkomstkontroll för beräkning av en användare.
Behörighetskrav:
- Behörigheten
READ FILES
på en extern plats i Unity Catalog. Mer information finns i Skapa en extern plats för att ansluta molnlagring till Azure Databricks. - Behörigheten
USE CATALOG
för katalogen där du skapar strömningstabellen. - Behörigheten
USE SCHEMA
för schemat där du skapar strömningstabellen. - Behörigheten
CREATE TABLE
för schemat där du skapar strömningstabellen.
Andra krav:
Sökvägen till dina källdata.
Exempel på volymsökväg:
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
Exempel på extern platssökväg:
abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis
Kommentar
Den här artikeln förutsätter att de data som du vill läsa in finns på en molnlagringsplats som motsvarar en Unity Catalog-volym eller en extern plats som du har åtkomst till.
Identifiera och förhandsgranska källdata
I sidofältet på arbetsytan klickar du på Frågor och sedan på Skapa fråga.
I frågeredigeraren väljer du ett SQL-lager som använder
Current
kanalen i listrutan.Klistra in följande i redigeraren, ersätt värden i vinkelparenteser (
<>
) för informationen som identifierar dina källdata och klicka sedan på Kör.Kommentar
Du kan stöta på schemainferensfel när du kör
read_files
funktionen tabellvärde om standardvärdena för funktionen inte kan parsa dina data. Du kan till exempel behöva konfigurera flerradsläge för CSV- eller JSON-filer med flera rader. En lista över parsningsalternativ finns i read_files tabellvärdesfunktion./* 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
Läsa in data i en strömmande tabell
Om du vill skapa en strömmande tabell från data i molnobjektlagring klistrar du in följande i frågeredigeraren och klickar sedan på Kör:
/* 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>')
Ange körningskanalen
Strömmande tabeller som skapats med SQL-lager uppdateras automatiskt med hjälp av en Delta Live Tables-pipeline. Delta Live Tables-pipelines använder körningen current
i kanalen som standard. Mer information om lanseringsprocessen finns i Viktig information om Delta Live Tables och versionsuppgraderingsprocessen .
Databricks rekommenderar att du använder current
kanalen för produktionsarbetsbelastningar. Nya funktioner släpps först till preview
kanalen. Du kan ange en pipeline till förhandsgranskningskanalen Delta Live Tables för att testa nya funktioner genom att preview
ange som en tabellegenskap. Du kan ange den här egenskapen när du skapar tabellen eller när tabellen har skapats med hjälp av en ALTER-instruktion.
I följande kodexempel visas hur du ställer in kanalen som förhandsversion i en CREATE-instruktion:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
Uppdatera en strömmande tabell med hjälp av en DLT-pipeline
I det här avsnittet beskrivs mönster för att uppdatera en strömmande tabell med de senaste tillgängliga data från källorna som definierats i frågan.
När du CREATE
eller REFRESH
en strömmande tabell bearbetas uppdateringen med hjälp av en serverlös Delta Live Tables-pipeline. Varje strömmande tabell som du definierar har en associerad Delta Live Tables-pipeline.
När du har kört kommandot REFRESH
returneras DLT-pipelinelänken. Du kan använda DLT-pipelinelänken för att kontrollera status för uppdateringen.
Kommentar
Endast tabellägaren kan uppdatera en strömmande tabell för att hämta de senaste data. Användaren som skapar tabellen är ägare och ägaren kan inte ändras. Du kan behöva uppdatera strömningstabellen innan du använder tidsresor frågor.
Mata bara in ny data
Som standard läser funktionen read_files
alla befintliga data i källkatalogen när tabellen skapas och bearbetar sedan nyligen ankommande poster med varje uppdatering.
Om du vill undvika att mata in data som redan finns i källkatalogen när tabellen skapas anger du alternativet includeExistingFiles
till false
. Det innebär att endast data som tas emot i katalogen när tabellen har skapats har bearbetats. Till exempel:
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)
Uppdatera en direktuppspelningstabell helt
Fullständiga uppdateringar bearbetar om alla data som är tillgängliga i källan med den senaste definitionen. Vi rekommenderar inte att du anropar fullständiga uppdateringar på källor som inte behåller hela datahistoriken eller har korta kvarhållningsperioder, till exempel Kafka, eftersom den fullständiga uppdateringen trunkerar befintliga data. Du kanske inte kan återställa gamla data om data inte längre är tillgängliga i källan.
Till exempel:
REFRESH STREAMING TABLE my_bronze_table FULL
Schemalägga en strömningstabell för automatisk uppdatering
Om du vill konfigurera en strömmande tabell så att den uppdateras automatiskt baserat på ett definierat schema klistrar du in följande i frågeredigeraren och klickar sedan på Kör:
ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
CRON '<cron-string>'
[ AT TIME ZONE '<timezone-id>' ]];
Exempel på uppdateringsschemafrågor finns i ALTER STREAMING TABLE (ÄNDRA STRÖMNINGSTABELL).
Spåra status för en uppdatering
Du kan visa status för en uppdatering av en strömmande tabell genom att visa pipelinen som hanterar strömningstabellen i Delta Live Tables-användargränssnittet eller genom att visa uppdateringsinformationen DESCRIBE EXTENDED
som returneras av kommandot för den strömmande tabellen.
DESCRIBE EXTENDED <table-name>
Strömmande inmatning från Kafka
Ett exempel på strömmande inmatning från Kafka finns i read_kafka.
Ge användare åtkomst till en strömningstabell
Om du vill ge användarna behörighet i SELECT
strömningstabellen så att de kan köra frågor mot den klistrar du in följande i frågeredigeraren och klickar sedan på Kör:
GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>
Mer information om hur du beviljar behörigheter för skyddsbara objekt i Unity Catalog finns i Unity Catalog-privilegier och skyddsbara objekt.
Övervaka körningar med hjälp av frågehistorik
Du kan använda sidan för frågehistorik för att få åtkomst till frågeinformation och frågeprofiler som kan hjälpa dig att identifiera frågor och flaskhalsar som fungerar dåligt i pipelinen Delta Live Tables som används för att köra dina uppdateringar av strömmande tabeller. En översikt över vilken typ av information som är tillgänglig i frågehistorik och frågeprofiler finns i Frågehistorik och Frågeprofil.
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion. Arbetsyteadministratörer kan aktivera den här funktionen från sidan Förhandsversioner . Se Hantera Förhandsversioner av Azure Databricks.
Alla instruktioner som rör strömmande tabeller visas i frågehistoriken. Du kan använda listrutefiltret Instruktion för att välja valfritt kommando och granska relaterade frågor. Alla CREATE
instruktioner följs av en REFRESH
instruktion som körs asynkront på en Delta Live Tables-pipeline. Instruktionerna REFRESH
innehåller vanligtvis detaljerade frågeplaner som ger insikter om hur du optimerar prestanda.
Använd följande steg för att komma åt REFRESH
instruktioner i användargränssnittet för frågehistorik:
- Klicka i det vänstra sidofältet för att öppna användargränssnittet för frågehistorik .
- Markera kryssrutan UPPDATERA i listrutan Instruktion .
- Klicka på namnet på frågeuttrycket för att visa sammanfattningsinformation som frågans varaktighet och aggregerade mått.
- Klicka på Se frågeprofil för att öppna frågeprofilen. Mer information om hur du navigerar i frågeprofilen finns i Frågeprofil .
- Du kan också använda länkarna i avsnittet Frågekälla för att öppna den relaterade frågan eller pipelinen.
Du kan också komma åt frågeinformation med hjälp av länkar i SQL-redigeraren eller från en notebook-fil som är kopplad till ett SQL-lager.
Kommentar
Din strömmande tabell måste vara konfigurerad att köras med hjälp av förhandsgranskningskanalen. Se Ange körningskanalen.