Azure Stream Analytics: Skriv till en Delta Lake-tabell
Delta Lake är ett öppet format som ger tillförlitlighet, kvalitet och prestanda till datasjöar. Du kan använda Azure Stream Analytics för att direkt skriva strömmande data till dina Delta Lake-tabeller utan att skriva en enda kodrad.
Ett Stream Analytics-jobb kan konfigureras för att skriva via en intern Delta Lake-utdataanslutning, antingen till en ny eller en fördefinierad Delta-tabell i ett Azure Data Lake Storage Gen2-konto. Den här anslutningsappen är optimerad för snabb inmatning till Delta-tabeller i tilläggsläge. Det ger också exakt en gång semantik, vilket garanterar att inga data går förlorade eller dupliceras. Genom att mata in dataströmmar i realtid från Azure Event Hubs i Delta-tabeller kan du utföra ad hoc-interaktiva analyser eller batchanalyser.
Delta Lake-konfiguration
Om du vill skriva data i Delta Lake måste du ansluta till ett Data Lake Storage Gen2-konto. I följande tabell visas de egenskaper som är relaterade till Delta Lake-konfigurationen.
Egenskapsnamn | beskrivning |
---|---|
Format för serialisering av händelser | Serialiseringsformat för utdata. JSON, CSV, Avro och Parquet stöds. Delta Lake visas som ett alternativ här. Data är i Parquet-format om Delta Lake har valts. |
Namn på deltasökväg | Sökvägen som används för att skriva Delta Lake-tabellen i den angivna containern. Den innehåller tabellnamnet. Mer information finns i nästa avsnitt. |
Partitionskolumn | Valfritt. Namnet {field} från dina utdata till partition. Endast en partitionskolumn stöds. Kolumnens värde måste vara av string typen . |
Den fullständiga listan över Data Lake Storage Gen2-konfigurationer finns i Översikt över Azure Data Lake Storage Gen2.
Namn på deltasökväg
Namnet på deltasökvägen används för att ange platsen och namnet på din Delta Lake-tabell som lagras i Data Lake Storage Gen2.
Du kan använda ett eller flera sökvägssegment för att definiera sökvägen till deltatabellen och deltatabellnamnet. Ett sökvägssegment är strängen mellan efterföljande avgränsartecken (till exempel snedstrecket /
) som motsvarar namnet på en virtuell katalog.
Segmentnamnet är alfanumeriskt och kan innehålla blanksteg, bindestreck och understreck. Det sista sökvägssegmentet används som tabellnamn.
Begränsningar för namnet på Delta-sökvägen är:
- Fältnamn är inte skiftlägeskänsliga. Tjänsten kan till exempel inte skilja mellan kolumn
ID
ochid
. - Inget dynamiskt
{field}
namn tillåts. Till exempel{ID}
behandlas som text {ID}. - Antalet sökvägssegment som utgör namnet får inte överstiga 254.
Exempel
Exempel på ett Namn på deltasökväg:
- Exempel 1:
WestUS/CA/factory1/device-table
- Exempel 2:
Test/demo
- Exempel 3:
mytable
Exempel på utdatafiler:
- Under den valda containern är
WestEurope/CA/factory1
katalogsökvägen och namnet på deltatabellmappen är device-table. - Under den valda containern är
Test
katalogsökvägen och namnet på deltatabellmappen är demo. - Under den valda containern är namnet på deltatabellmappen mytable.
Skapa en ny tabell
Om det inte redan finns en Delta Lake-tabell med samma namn och på den plats som anges av namnet på deltasökvägen skapar Stream Analytics som standard en ny Delta-tabell. Den här nya tabellen skapas med följande konfiguration:
- Skrivarversion 2.
- Läsarversion 1.
- Tabellen är endast tillägg.
- Tabellschemat skapas med schemat för den första posten som påträffades.
Skriva till tabellen
Om det redan finns en Delta Lake-tabell med samma namn och på den plats som anges av namnet på Delta-sökvägen skriver Stream Analytics som standard nya poster till den befintliga tabellen.
Leverans exakt en gång
Transaktionsloggen gör det möjligt för Delta Lake att garantera bearbetning exakt en gång. Stream Analytics tillhandahåller även leverans exakt en gång när data matas ut till Data Lake Storage Gen2 under en enda jobbkörning.
Schematillämpning
Schematillämpning innebär att alla nya skrivningar till en tabell framtvingas för att vara kompatibla med måltabellens schema vid skrivtillfället för att säkerställa datakvaliteten.
Alla poster med utdata projiceras enligt schemat för den befintliga tabellen. Om utdata skrivs till en ny Delta-tabell skapas tabellschemat med den första posten. Om inkommande data har en extra kolumn jämfört med det befintliga tabellschemat skrivs de i tabellen utan den extra kolumnen. Om inkommande data saknar en kolumn jämfört med det befintliga tabellschemat skrivs de i tabellen med kolumnen null.
Om det inte finns någon skärningspunkt mellan schemat för Delta-tabellen och schemat för en post för strömningsjobbet anses det vara en instans av schemakonverteringsfel. Det är inte det enda fallet som anses vara ett schemakonverteringsfel.
När schemakonverteringen misslyckas följer jobbbeteendet principen för felhantering av utdata som konfigurerats på jobbnivå.
Kontrollpunkter för deltaloggar
Stream Analytics-jobbet skapar deltaloggkontrollpunkter med jämna mellanrum i V1-format. Deltaloggkontrollpunkter är ögonblicksbilder av Delta-tabellen och innehåller vanligtvis namnet på den datafil som genereras av Stream Analytics-jobbet. Om antalet datafiler är stort leder det till stora kontrollpunkter, vilket kan orsaka minnesproblem i Stream Analytics-jobbet.
Begränsningar
- Dynamisk partitionsnyckel (som anger namnet på en kolumn i postschemat i Delta-sökvägen) stöds inte.
- Flera partitionskolumner stöds inte. Om du vill ha flera partitionskolumner rekommenderar vi att du använder en sammansatt nyckel i frågan och sedan anger den som partitionskolumn.
- En sammansatt nyckel kan skapas i frågan. Ett exempel är
"SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]"
.
- En sammansatt nyckel kan skapas i frågan. Ett exempel är
- Att skriva till Delta Lake är endast tillägg.
- Schemakontroll i frågetestning är inte tillgängligt.
- Liten filkomprimering utförs inte av Stream Analytics.
- Alla datafiler skapas utan komprimering.
- Typerna Datum och Decimal stöds inte.
- Det går inte att skriva till befintliga tabeller i Writer Version 7 eller senare med skrivarfunktioner.
- Exempel: Det går inte att skriva till befintliga tabeller med borttagningsvektorer aktiverade.
- Undantagen här är changeDataFeed och appendOnly Writer Features.
- När ett Stream Analytics-jobb skriver en batch med data till en Delta Lake kan det generera flera lägg till filåtgärder. När det finns för många Lägg till fil-åtgärder som genereras för en enda batch kan ett Stream Analytics-jobb fastna.
- Antalet lägg till filåtgärder som genereras bestäms av många faktorer:
- Batchens storlek. Det bestäms av datavolymen och batchparametrarna Minsta rader och Maximal tid.
- Kardinaliteten för partitionskolumnvärdena för batchen.
- Så här minskar du antalet lägg till filåtgärder som genererats för en batch:
- Minska batchkonfigurationerna Minsta rader och Maximal tid.
- Minska kardinaliteten för partitionskolumnvärdena genom att justera indata eller välja en annan partitionskolumn.
- Antalet lägg till filåtgärder som genereras bestäms av många faktorer:
- Stream Analytics-jobb kan bara läsa och skriva enstaka V1-kontrollpunkter. Kontrollpunkter för flera delar och kontrollpunktsformatet V2 stöds inte.