Delen via


Azure Stream Analytics: schrijven naar een Delta Lake-tabel

Delta Lake is een open indeling die betrouwbaarheid, kwaliteit en prestaties biedt aan data lakes. U kunt Azure Stream Analytics gebruiken om rechtstreeks streaminggegevens naar uw Delta Lake-tabellen te schrijven zonder één regel code te schrijven.

Een Stream Analytics-taak kan worden geconfigureerd om te schrijven via een systeemeigen Delta Lake-uitvoerconnector, hetzij naar een nieuwe of vooraf gemaakte Delta-tabel in een Azure Data Lake Storage Gen2-account. Deze connector is geoptimaliseerd voor snelle opname naar Delta-tabellen in de toevoegmodus. Het biedt ook exact eenmaal semantiek, wat garandeert dat er geen gegevens verloren gaan of worden gedupliceerd. Door realtime gegevensstromen van Azure Event Hubs op te nemen in Delta-tabellen, kunt u ad hoc interactieve analyses of batchanalyses uitvoeren.

Delta Lake-configuratie

Als u gegevens wilt schrijven in Delta Lake, moet u verbinding maken met een Data Lake Storage Gen2-account. De volgende tabel bevat de eigenschappen die betrekking hebben op de Delta Lake-configuratie.

Eigenschapsnaam Beschrijving
Serialisatie-indeling voor gebeurtenissen Serialisatie-indeling voor uitvoergegevens. JSON, CSV, Avro en Parquet worden ondersteund. Delta Lake wordt hier vermeld als een optie. De gegevens hebben de Parquet-indeling als Delta Lake is geselecteerd.
Delta-padnaam Het pad dat wordt gebruikt om uw Delta Lake-tabel in de opgegeven container te schrijven. Deze bevat de tabelnaam. Meer informatie vindt u in de volgende sectie.
Partitiekolom Optioneel. De {field} naam van de uitvoergegevens naar de partitie. Er wordt slechts één partitiekolom ondersteund. De waarde van de kolom moet van het string type zijn.

Zie het overzicht van Azure Data Lake Storage Gen2 voor een volledige lijst met configuraties van Data Lake Storage Gen2.

Delta-padnaam

De naam van het Delta-pad wordt gebruikt om de locatie en naam op te geven van de Delta Lake-tabel die is opgeslagen in Data Lake Storage Gen2.

U kunt een of meer padsegmenten gebruiken om het pad naar de Delta-tabel en de naam van de Delta-tabel te definiëren. Een padsegment is de tekenreeks tussen opeenvolgende scheidingstekens (bijvoorbeeld de slash /) die overeenkomt met de naam van een virtuele map.

De segmentnaam is alfanumerieke en kan spaties, afbreekstreepjes en onderstrepingstekens bevatten. Het laatste padsegment wordt gebruikt als tabelnaam.

Beperkingen voor de naam van het Delta-pad zijn onder andere:

  • Veldnamen zijn niet hoofdlettergevoelig. De service kan bijvoorbeeld geen onderscheid maken tussen kolom ID en id.
  • Er is geen dynamische {field} naam toegestaan. Wordt bijvoorbeeld {ID} behandeld als tekst {ID}.
  • Het aantal padsegmenten waaruit de naam bestaat, mag niet groter zijn dan 254.

Voorbeelden

Voorbeelden voor de naam van een Delta-pad:

  • Voorbeeld 1: WestUS/CA/factory1/device-table
  • Voorbeeld 2: Test/demo
  • Voorbeeld 3: mytable

Voorbeeld van uitvoerbestanden:

  1. Onder de gekozen container is WestEurope/CA/factory1 het mappad en de mapnaam van de Delta-tabel is apparaattabel.
  2. Onder de gekozen container is Test het mappad en is de naam van de map Delta-tabel demo.
  3. Onder de gekozen container is de mapnaam van de Delta-tabel mytable.

Een nieuwe tabel maken

Als er nog geen Delta Lake-tabel met dezelfde naam is en op de locatie die is opgegeven door de naam van het Delta-pad, maakt Stream Analytics standaard een nieuwe Delta-tabel. Deze nieuwe tabel wordt gemaakt met de volgende configuratie:

Schrijven naar de tabel

Als er al een Delta Lake-tabel bestaat met dezelfde naam en op de locatie die is opgegeven door de naam van het Delta-pad, schrijft Stream Analytics standaard nieuwe records naar de bestaande tabel.

Exactly-once levering

Met het transactielogboek kan Delta Lake exact één keer worden verwerkt. Stream Analytics biedt ook exact eenmaal levering bij het uitvoeren van gegevens naar Data Lake Storage Gen2 tijdens één taakuitvoering.

Afdwingen van schema

Schemaafdwinging betekent dat alle nieuwe schrijfbewerkingen naar een tabel worden afgedwongen om op schrijftijd compatibel te zijn met het schema van de doeltabel om gegevenskwaliteit te garanderen.

Alle records met uitvoergegevens worden geprojecteerd naar het schema van de bestaande tabel. Als de uitvoer naar een nieuwe Delta-tabel wordt geschreven, wordt het tabelschema gemaakt met de eerste record. Als de binnenkomende gegevens één extra kolom hebben in vergelijking met het bestaande tabelschema, worden deze in de tabel geschreven zonder de extra kolom. Als er één kolom ontbreekt in vergelijking met het bestaande tabelschema, worden deze in de tabel geschreven, waarbij de kolom null is.

Als er geen snijpunt is tussen het schema van de Delta-tabel en het schema van een record van de streamingtaak, wordt dit beschouwd als een exemplaar van een schemaconversiefout. Dit is niet het enige geval dat als schemaconversiefout wordt beschouwd.

Bij het mislukken van schemaconversie volgt het taakgedrag het beleid voor foutafhandeling van uitvoergegevens dat is geconfigureerd op taakniveau.

Controlepunten voor Delta-logboeken

De Stream Analytics-taak maakt periodiek controlepunten voor Delta-logboeken in de V1-indeling. Controlepunten voor Delta-logboeken zijn momentopnamen van de Delta-tabel en bevatten doorgaans de naam van het gegevensbestand dat is gegenereerd door de Stream Analytics-taak. Als het aantal gegevensbestanden groot is, leidt dit tot grote controlepunten, wat geheugenproblemen in de Stream Analytics-taak kan veroorzaken.

Beperkingen

  • Dynamische partitiesleutel (het opgeven van de naam van een kolom van het recordschema in het Delta-pad) wordt niet ondersteund.
  • Meerdere partitiekolommen worden niet ondersteund. Als u meerdere partitiekolommen wilt gebruiken, raden we u aan een samengestelde sleutel in de query te gebruiken en deze vervolgens op te geven als de partitiekolom.
    • Er kan een samengestelde sleutel worden gemaakt in de query. Een voorbeeld is "SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]".
  • Schrijven naar Delta Lake is alleen toegevoegd.
  • Het controleren van schema's bij het testen van query's is niet beschikbaar.
  • Kleine bestandscompressie wordt niet uitgevoerd door Stream Analytics.
  • Alle gegevensbestanden worden gemaakt zonder compressie.
  • De typen Datum en Decimaal worden niet ondersteund.
  • Schrijven naar bestaande tabellen van Writer versie 7 of hoger met schrijffuncties mislukken.
  • Wanneer een Stream Analytics-taak een batch met gegevens naar een Delta Lake schrijft, kan deze meerdere bestandsacties toevoegen genereren. Wanneer er te veel bestandsacties toevoegen zijn gegenereerd voor één batch, kan een Stream Analytics-taak vastlopen.
    • Het aantal gegenereerde bestandsacties toevoegen wordt bepaald door veel factoren:
    • Om het aantal gegenereerde bestandsacties voor een batch te verminderen:
  • Stream Analytics-taken kunnen slechts één deel V1-controlepunten lezen en schrijven. Controlepunten met meerdere onderdelen en de indeling controlepunt V2 worden niet ondersteund.