Delen via


Azure Stream Analytics - schrijven naar Delta Lake-tabel

Delta Lake is een open indeling die betrouwbaarheid, kwaliteit en prestaties biedt aan data lakes. Met Azure Stream Analytics kunt u rechtstreeks streaminggegevens naar uw Delta Lake-tabellen schrijven zonder dat u één regel code hoeft 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 van deltatabellen in de toevoegmodus en biedt ook precies eenmaal semantiek, wat garandeert dat er geen gegevens verloren of gedupliceerd worden. 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 Azure Data Lake Storage Gen2-account. De onderstaande 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, 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 naam van {field} van de uitvoergegevens naar de partitie. Er wordt slechts één partitiekolom ondersteund. De waarde van de kolom moet van het tekenreekstype zijn

Zie HET OVERZICHT van ALDS Gen2 voor een volledige lijst met ADLS Gen2-configuraties.

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 Azure Data Lake Storage Gen2.

U kunt ervoor kiezen om een of meer padsegmenten te gebruiken om het pad naar de deltatabel en de naam van de deltatabel 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 omvatten de volgende:

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

Voorbeelden

Voorbeelden voor de naam van het Delta-pad:

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

Voorbeeld van uitvoerbestanden:

  1. Onder de gekozen container zou het mappad zijn WestEurope/CA/factory1 en zou de mapnaam van de Delta-tabel apparaattabel zijn.
  2. Onder de gekozen container zou het mappad zijn Test en zou de naam van de deltatabelmap demo zijn.
  3. Onder de gekozen container is de naam van de deltatabelmap 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 Azure 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 Azure Stream Analytics standaard nieuwe records naar de bestaande tabel.

Precies één keer levering

Met het transactielogboek kan Delta Lake exact één keer worden verwerkt. Azure Stream Analytics biedt ook precies eenmaal levering wanneer gegevens worden uitgevoerd naar Azure Data Lake Storage Gen2 tijdens één taakuitvoering.

Afdwingen van schema

Schemaafdwinging betekent dat alle nieuwe schrijfbewerkingen naar een tabel worden afgedwongen om tijdens 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 deltatabel 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 deltatabel 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 uitvoergegevensfout dat is geconfigureerd op taakniveau.

Controlepunten voor Delta-logboeken

Met de Stream Analytics-taak worden periodiek deltalogboekcontrolepunten gemaakt in de V1-indeling. Delta-logboekcontrolepunten 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, is het raadzaam om 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, bijvoorbeeld: 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 actie bestand toevoegen genereren. Wanneer er te veel bestandsacties voor één batch zijn gegenereerd, kan een Stream Analytics-taak vastlopen.
    • Het aantal gegenereerde bestandsacties toevoegen wordt bepaald door veel factoren:
    • Als u het aantal gegenereerde bestandsacties voor een batch wilt verminderen, kunt u de volgende stappen uitvoeren:
  • Stream Analytics-taken kunnen slechts één deel V1-controlepunten lezen en schrijven. Controlepunten met meerdere onderdelen en de indeling Checkpoint V2 worden niet ondersteund.

Volgende stappen