Strömmande tabeller

En strömningstabell är en Delta-tabell med ytterligare stöd för direktuppspelning eller inkrementell databearbetning. En strömningstabell kan riktas mot ett eller flera flöden i en pipeline.

Vägledning om när du ska använda strömmande tabeller jämfört med materialiserade vyer eller vyer finns i Vad är pipelines?.

Strömmande tabeller är ett bra val för datainmatning av följande skäl:

  • Varje indatarad hanteras bara en gång, vilket modellerar de allra flesta inmatningsarbetsbelastningar (dvs. genom att lägga till eller utöka rader till en tabell).
  • De kan hantera stora mängder data som endast kan läggas till.

Direktuppspelningstabeller är också ett bra alternativ för strömningstransformeringar med låg latens eftersom de kan resonera över rader och tidsperioder, hantera stora mängder data och tillhandahålla bearbetning med låg latens.

Följande diagram visar hur flöden läser från strömmande källor och skriver inkrementellt till en strömmande tabell inom en pipeline.

Diagram som visar S3-, Kafka- och Pub/Sub-strömmande källor som är anslutna till enskilda flöden som läser nya data till en pipeline som innehåller en strömmande tabell.

Vid varje uppdatering läser de flöden som är associerade med en strömningstabell den ändrade informationen i en strömmande källa och lägger till ny information i tabellen.

Strömmande tabeller ägs och uppdateras av en enda pipeline. Du definierar explicit strömmande tabeller i pipelinens källkod. Tabeller som definieras av en pipeline kan inte ändras eller uppdateras av någon annan pipeline. Du kan definiera flera flöden för att lägga till i en enda direktuppspelningstabell.

Azure Databricks skapar interna tabeller som stöder bearbetning av strömmande tabeller. Dessa tabeller visas i system.information_schema.tables men visas inte i Katalogutforskaren eller andra arbetsytegränssnittssidor.

Note

När du skapar en fristående strömningstabell, utanför en Lakeflow-pipeline, skapar Azure Databricks en pipeline som används för att uppdatera tabellen. Du kan se pipelinen genom att välja Jobb & Pipelines i det vänstra navigeringsfältet i din arbetsyta. Du kan lägga till kolumnen Pipelinetyp i vyn. Strömmande tabeller som definierats i en pipeline har en typ av ETL. Fristående strömmande tabeller är av typen MV/ST.

Mer information om flöden finns i Läsa in och bearbeta data stegvis med Lakeflow-pipelineflöden.

Strömmande tabeller för inmatning

Strömmande tabeller är utformade för datakällor där data endast läggs till och bearbetar indatan endast en gång. Detta gör dem väl lämpade för inmatningsarbetsbelastningar där data anländer kontinuerligt och måste samlas in på ett tillförlitligt sätt utan att befintliga poster bearbetas på nytt. Azure Databricks stöder inmatning i strömmande tabeller från molnobjektlagring (med automatisk inläsning) och från strömning av meddelandebussar som Apache Kafka, Azure Event Hubs och Google Pub/Sub. Anvisningar och kodexempel för inmatning finns i Läsa in data i pipelineflöden.

Note

Om du vill strömma källdata som ändras över tid (till exempel poster som uppdateras eller tas bort vid källan) använder du AUTO CDC för att tillämpa dessa ändringar på en strömmande tabell i stället för att lägga till dem. Se Ändra datainsamling och ögonblicksbilder.

Följande diagram visar hur strömmande tabeller som enbart tillåter tillägg fungerar.

Ett diagram som visar hur append-only sts fungerar

En rad som redan har lagts till i en strömmande tabell kommer inte att efterfrågas igen med senare uppdateringar av pipelinen. Om du ändrar frågan (till exempel från SELECT LOWER (name) till SELECT UPPER (name)) uppdateras inte befintliga rader till versaler, men nya rader kommer att vara versaler. Du kan utlösa en fullständig uppdatering för att hämta alla tidigare data från källtabellen för att uppdatera alla rader i den strömmande tabellen.

Strömningstabeller och strömning med låg fördröjning

Strömningstabeller är utformade för strömning med låg latens över begränsat tillstånd. Strömningstabeller använder kontrollpunktshantering, vilket gör dem väl lämpade för strömning med låg fördröjning. De förväntar sig dock strömmar som är naturligt avgränsade eller avgränsade med en vattenstämpel.

En naturligt avgränsad dataström skapas av en strömmande datakälla som har en väldefinierad start och slut. Ett exempel på en naturligt avgränsad dataström är att läsa data från en katalog med filer där inga nya filer läggs till efter att en första batch med filer har placerats. Dataströmmen anses vara begränsad eftersom antalet filer är begränsat och strömmen avslutas när alla filer har bearbetats.

Du kan också använda en vattenstämpel för att begränsa en datastream. En vattenstämpel i Structured Streaming är en mekanism som hjälper till att hantera sena data genom att ange hur länge systemet ska vänta på fördröjda händelser innan tidsfönstret betraktas som slutfört. En obunden ström som inte har en vattenstämpel kan orsaka att en pipeline misslyckas på grund av minnesbelastning.

För driftarbetsbelastningar som behöver lägsta möjliga svarstid kan du köra pipelinen i realtidsläge för att bearbeta poster med svarstid under sekund, från slutpunkt till slutpunkt.

Mer information finns i:

Begränsningar för strömmande tabeller

Strömmande tabeller har följande begränsningar:

  • Begränsad utveckling: Du kan ändra frågan utan att omberäkna hela datamängden. Utan en fullständig uppdatering ser en strömmande tabell bara varje rad en gång, så olika frågor har bearbetat olika rader. Om du till exempel lägger till UPPER() i ett fält i frågan kommer endast rader som bearbetas efter ändringen att vara i versaler. Det innebär att du måste vara medveten om alla tidigare versioner av frågan som körs på din datauppsättning. För att bearbeta befintliga rader som bearbetades före ändringen krävs en fullständig uppdatering.
  • Tillståndshantering: Strömmande tabeller har låg svarstid och kräver strömmar som är naturligt avgränsade eller avgränsade med en vattenstämpel. Mer information finns i Optimera tillståndskänslig bearbetning med vattenstämplar.
  • Kopplingar beräknas inte om: Kopplingar i strömmande tabeller beräknas inte om när dimensionerna ändras. Den här egenskapen kan vara bra för "snabba men fel"-scenarier. Om du vill att vyn alltid ska vara korrekt kanske du vill använda en materialiserad vy. Materialiserade vyer är alltid korrekta eftersom de automatiskt omkomplerar kopplingar när dimensionerna ändras. Mer information finns i Materialiserade vyer. Ett exempel på hur du ansluter en ström till en statisk dimensionstabell finns i Stream-static joins (Ström-statiska kopplingar).
  • CLONE Strömmande tabeller kan inte användas som källa eller mål för en djup eller grund klon. Andra kommandon som inte stöds finns i Begränsningar.
  • REFRESH behörighet som krävs för att visa pipelinen: Om du vill visa pipelinen som stöder en strömningstabell behöver en icke-administratörsanvändare behörigheten REFRESH på strömningstabellen utöver behörigheter för pipelinen. Se Vem kan visa en pipeline och dess utdata?.

Ytterligare resurser