Gids voor prestaties en afstemming van toewijzingsgegevensstromen
VAN TOEPASSING OP:
Azure Data Factory
Azure Synapse Analytics
Toewijzingsgegevensstromen in Azure Data Factory en Synapse-pijplijnen bieden een interface zonder code voor het op schaal ontwerpen en uitvoeren van gegevenstransformaties. Als u niet bekend bent met toewijzingsgegevensstromen, leest u eerst dit overzicht van toewijzingsgegevensstromen. In dit artikel worden verschillende manieren beschreven om uw gegevensstromen af te stemmen en te optimaliseren, zodat ze voldoen aan uw prestatiebenchmarks.
Bekijk de onderstaande video om een aantal voorbeeldtijdsinstellingen weer te geven voor het transformeren van gegevens met gegevensstromen.
Prestaties van gegevensstromen bewaken
Zodra u uw transformatielogica hebt gecontroleerd met behulp van de foutopsporingsmodus, kunt u uw gegevensstroom end-to-end uitvoeren als een activiteit in een pijplijn. Gegevensstromen worden operationeel gemaakt in een pijplijn met behulp van de activiteit gegevensstroom uitvoeren. De gegevensstroomactiviteit heeft een unieke bewakingservaring vergeleken met andere activiteiten die een gedetailleerd uitvoeringsplan en een gedetailleerd prestatieprofiel van de transformatielogica laten zien. Als u gedetailleerde bewakingsgegevens van een gegevensstroom wilt weergeven, klikt u op het pictogram van een bril in de uitvoer van de activiteituitvoer van een pijplijn. Zie Bewaking van toewijzingsgegevensstromen voor meer informatie.
Bij het bewaken van de prestaties van de gegevensstroom zijn er vier mogelijke knelpunten om op te zoeken:
- Opstarttijd cluster
- Lezen uit een bron
- Transformatietijd
- Schrijven naar een sink
De opstarttijd van het cluster is de tijd die nodig is om een cluster Apache Spark maken. Deze waarde bevindt zich in de rechterbovenhoek van het bewakingsscherm. Gegevensstromen worden uitgevoerd op een Just-In-Time-model waarbij elke taak gebruikmaakt van een geïsoleerd cluster. Deze opstarttijd duurt doorgaans 3-5 minuten. Voor sequentiële taken kan dit worden verminderd door een time-to-live-waarde in te stellen. Raadpleeg de sectie Time to live in Integration Runtime performance voor meer informatie.
Gegevensstromen maken gebruik van een Spark-optimalisatie die uw bedrijfslogica in 'fasen' opnieuw rangschikt en uitgevoerd om zo snel mogelijk uit te voeren. Voor elke sink waar uw gegevensstroom naar schrijft, geeft de bewakingsuitvoer de duur van elke transformatiefase weer, samen met de tijd die nodig is om gegevens naar de sink te schrijven. De tijd die het grootst is, is waarschijnlijk het knelpunt van uw gegevensstroom. Als de transformatiefase die de grootste neemt een bron bevat, kunt u de leestijd verder optimaliseren. Als een transformatie lang duurt, moet u mogelijk de integratieruntime opnieuw indelen of vergroten. Als de verwerkingstijd van de sink groot is, moet u mogelijk uw database omhoog schalen of controleren of u geen uitvoer naar één bestand maakt.
Zodra u het knelpunt van uw gegevensstroom hebt geïdentificeerd, gebruikt u de onderstaande optimalisatiestrategieën om de prestaties te verbeteren.
Gegevensstroomlogica testen
Bij het ontwerpen en testen van gegevensstromen vanuit de gebruikersinterface kunt u met de foutopsporingsmodus interactief testen op een live Spark-cluster. Hiermee kunt u een voorbeeld van gegevens bekijken en uw gegevensstromen uitvoeren zonder te wachten tot een cluster wordt opgewarmd. Zie Foutopsporingsmodus voor meer informatie.
Tabblad optimaliseren
Het tabblad Optimaliseren bevat instellingen voor het configureren van het partitieschema van het Spark-cluster. Dit tabblad bestaat in elke transformatie van de gegevensstroom en geeft aan of u de gegevens opnieuw wilt opdelen nadat de transformatie is voltooid. Het aanpassen van de partitionering biedt controle over de distributie van uw gegevens over rekenknooppunten en optimalisaties van gegevens lokaliteit die zowel positieve als negatieve gevolgen kunnen hebben voor de algehele prestaties van de gegevensstroom.
Standaard is Huidige partitionering gebruiken geselecteerd, waarmee de service de huidige uitvoerpartities van de transformatie laat behouden. Omdat het opnieuw partitioneren van gegevens tijd kost, wordt In de meeste scenario's het gebruik van huidige partitionering aanbevolen. Scenario's waarin u uw gegevens mogelijk opnieuw wilt partitioneren, zijn onder andere na aggregatie en joins die uw gegevens aanzienlijk scheef maken of wanneer u Bronpartitionering gebruikt op een SQL DB.
Als u de partitionering voor een transformatie wilt wijzigen, selecteert u het tabblad Optimaliseren en selecteert u het keuzerondje Partitioneren instellen. U krijgt een reeks opties voor partitioneren te zien. De beste partitioneringsmethode is afhankelijk van uw gegevensvolumes, kandidaatsleutels, null-waarden en kardinaliteit.
Belangrijk
Eén partitie combineert alle gedistribueerde gegevens in één partitie. Dit is een zeer trage bewerking die ook een aanzienlijke invloed heeft op alle downstreamtransformaties en schrijfbewerkingen. Deze optie wordt sterk afgeraden, tenzij er een expliciete zakelijke reden is om deze te gebruiken.
De volgende partitioneringsopties zijn beschikbaar in elke transformatie:
Round robin
Round robin verdeelt gegevens gelijkmatig over partities. Gebruik round robin wanneer u geen goede kandidaten hebt om een solide, slimme partitioneringsstrategie te implementeren. U kunt het aantal fysieke partities instellen.
Hash
De service produceert een hash van kolommen om uniforme partities te produceren, zodat rijen met vergelijkbare waarden in dezelfde partitie vallen. Wanneer u de optie Hash gebruikt, test u op mogelijke partitieverschil. U kunt het aantal fysieke partities instellen.
Dynamisch bereik
Het dynamische bereik maakt gebruik van dynamische Spark-reeksen op basis van de kolommen of expressies die u op geeft. U kunt het aantal fysieke partities instellen.
Vast bereik
Bouw een expressie die een vast bereik biedt voor waarden binnen uw gepart partitioneerde gegevenskolommen. Om partitieverschil te voorkomen, moet u een goed begrip hebben van uw gegevens voordat u deze optie gebruikt. De waarden die u voor de expressie op invoeren, worden gebruikt als onderdeel van een partitiefunctie. U kunt het aantal fysieke partities instellen.
Sleutel
Als u een goed begrip hebt van de kardinaliteit van uw gegevens, kan het partitioneren van sleutels een goede strategie zijn. Bij het partitioneren van sleutels worden partities gemaakt voor elke unieke waarde in uw kolom. U kunt het aantal partities niet instellen omdat het getal is gebaseerd op unieke waarden in de gegevens.
Tip
Als u het partitieschema handmatig instelt, worden de gegevens opnieuw in de sleuf geplaatst en kunnen de voordelen van de Spark-optimalisatie worden verschoven. Een best practice is om de partitionering niet handmatig in te stellen, tenzij dat nodig is.
Niveau van logboekregistratie
Als u niet elke pijplijnuitvoering van uw gegevensstroomactiviteiten nodig hebt om alle uitgebreide telemetrielogboeken volledig te registreren, kunt u eventueel uw logboekregistratieniveau instellen op Basic of Geen. Wanneer u uw gegevensstromen in de modus Uitgebreid (standaard) wilt uitvoeren, vraagt u de service om activiteiten op elk afzonderlijk partitieniveau volledig te laten inloggen tijdens uw gegevenstransformatie. Dit kan een dure bewerking zijn, zodat u de algehele prestaties van uw gegevensstroom en pijplijn alleen kunt verbeteren door uitgebreide problemen op te lossen. In de modus Basic worden alleen de duur van transformaties in een logboek bij gegeven, terwijl 'Geen' alleen een samenvatting van de duur biedt.
Volgende stappen
- Bronnen optimaliseren
- Sinks optimaliseren
- Transformaties optimaliseren
- Gegevensstromen gebruiken in pijplijnen
Zie andere data Flow met betrekking tot prestaties: