Share via


Automatisch laadprogramma configureren voor productieworkloads

Databricks raadt u aan de aanbevolen procedures voor streaming te volgen voor het uitvoeren van autoladers in productie.

Databricks raadt het gebruik van autolaadprogramma's aan in Delta Live Tables voor incrementele gegevensopname. Delta Live Tables breidt de functionaliteit uit in Apache Spark Structured Streaming en stelt u in staat om slechts een paar regels declaratieve Python of SQL te schrijven om een gegevenspijplijn van productiekwaliteit te implementeren met:

Automatisch laadprogramma bewaken

Query's uitvoeren op bestanden die zijn gedetecteerd door automatisch laden

Notitie

De cloud_files_state functie is beschikbaar in Databricks Runtime 11.3 LTS en hoger.

Auto Loader biedt een SQL-API voor het inspecteren van de status van een stream. Met behulp van de cloud_files_state functie kunt u metagegevens vinden over bestanden die zijn gedetecteerd door een stroom voor automatisch laden. U hoeft alleen maar een query uit cloud_files_statete voeren op de locatie van het controlepunt dat is gekoppeld aan een Stroom voor automatisch laden.

SELECT * FROM cloud_files_state('path/to/checkpoint');

Luisteren naar stream-updates

Databricks raadt aan de streamingquerylistenerinterface van Apache Spark te gebruiken om automatisch laadprogrammastreams verder te bewaken.

Auto Loader rapporteert metrische gegevens aan de streamingquerylister in elke batch. U kunt zien hoeveel bestanden er in de achterstand staan en hoe groot de achterstand zich in het numFilesOutstandingnumBytesOutstanding tabblad Onbewerkte gegevens bevindt op het tabblad Onbewerkte gegevens in het voortgangsdashboard voor streamingquery's:

{
  "sources" : [
    {
      "description" : "CloudFilesSource[/path/to/source]",
      "metrics" : {
        "numFilesOutstanding" : "238",
        "numBytesOutstanding" : "163939124006"
      }
    }
  ]
}

In Databricks Runtime 10.4 LTS en hoger, wanneer u de modus voor bestandsmeldingen gebruikt, bevatten de metrische gegevens ook het geschatte aantal bestandsevenementen dat zich in de cloudwachtrij bevindt, net als approximateQueueSize voor AWS en Azure.

Kostenoverwegingen

Bij het uitvoeren van automatische laadprogramma's zijn de belangrijkste kostenbron de kosten van rekenresources en bestandsdetectie.

Om de rekenkosten te verlagen, raadt Databricks u aan om Databricks-taken te gebruiken om Automatisch laden als batchtaken Trigger.AvailableNow te plannen in plaats van deze continu uit te voeren, zolang u geen lage latentievereisten hebt. Zie Triggerintervallen voor gestructureerd streamen configureren.

De kosten voor bestandsdetectie kunnen worden geleverd in de vorm van LIST-bewerkingen voor uw opslagaccounts in de modus voor het weergeven van mappen en API-aanvragen voor de abonnementsservice en de wachtrijservice in de modus voor bestandsmeldingen. Databricks raadt het volgende aan om de kosten voor bestandsdetectie te verlagen:

  • ProcessingTime Een trigger opgegeven bij het continu uitvoeren van automatisch laden in de modus voor adreslijstvermelding
  • Bestandsuploads ontwerpen naar uw opslagaccount in lexicale volgorde om gebruik te maken van incrementele vermelding (afgeschaft) indien mogelijk
  • Bestandsmeldingen gebruiken wanneer incrementele vermelding niet mogelijk is
  • Resourcetags gebruiken om resources te taggen die door Auto Loader zijn gemaakt om uw kosten bij te houden

Trigger.AvailableNow en snelheidsbeperking gebruiken

Notitie

Beschikbaar in Databricks Runtime 10.4 LTS en hoger.

Automatisch laden kan worden gepland voor uitvoering in Databricks-taken als een batchtaak met behulp van Trigger.AvailableNow. Met AvailableNow de trigger wordt automatisch laden geïnstrueerd om alle bestanden te verwerken die vóór de begintijd van de query zijn aangekomen. Nieuwe bestanden die worden geüpload nadat de stream is gestart, worden genegeerd tot de volgende trigger.

Bestandsdetectie Trigger.AvailableNowvindt asynchroon plaats met gegevensverwerking en gegevens kunnen worden verwerkt in meerdere microbatches met snelheidsbeperking. Automatisch laden verwerkt standaard maximaal 1000 bestanden elke microbatch. U kunt configureren cloudFiles.maxFilesPerTrigger hoeveel cloudFiles.maxBytesPerTrigger bestanden of hoeveel bytes moeten worden verwerkt in een microbatch. De bestandslimiet is een vaste limiet, maar de bytelimiet is een zachte limiet, wat betekent dat meer bytes kunnen worden verwerkt dan de opgegeven maxBytesPerTrigger. Wanneer de opties beide samen worden geleverd, verwerkt Auto Loader zoveel bestanden die nodig zijn om een van de limieten te bereiken.

Retentie van gebeurtenissen

Auto Loader houdt gedetecteerde bestanden bij op de controlepuntlocatie met behulp van RocksDB om exactly-once opnamegaranties te bieden. Databricks raadt u ten zeerste aan om de cloudFiles.maxFileAge optie te gebruiken voor alle gegevensstromen met een hoge of lange levensduur. Deze optie verloopt gebeurtenissen vanaf de locatie van het controlepunt, waardoor de opstarttijd van automatisch laden wordt versneld. Opstarttijd kan groeien in de minuten per autolaadprogramma, waardoor onnodige kosten worden toegevoegd wanneer u een bovengrens hebt voor de maximale leeftijd van bestanden die worden opgeslagen in de bronmap. De minimumwaarde waarvoor u kunt instellen cloudFiles.maxFileAge , is "14 days". Verwijderingen in RocksDB worden weergegeven als tombstone-vermeldingen. Daarom moet u verwachten dat het opslaggebruik tijdelijk toeneemt wanneer gebeurtenissen verlopen voordat deze begint af te tillen.

Waarschuwing

cloudFiles.maxFileAge wordt geleverd als kostenbeheermechanisme voor gegevenssets met een hoog volume. Het afstemmen cloudFiles.maxFileAge kan te agressief leiden tot problemen met gegevenskwaliteit, zoals dubbele opname of ontbrekende bestanden. Daarom raadt Databricks een conservatieve instelling aan voor cloudFiles.maxFileAge, zoals 90 dagen, die vergelijkbaar is met wat vergelijkbare oplossingen voor gegevensopname aanbevelen.

Als u de cloudFiles.maxFileAge optie probeert af te stemmen, kan dit ertoe leiden dat niet-verwerkte bestanden worden genegeerd door automatisch laden of al verwerkte bestanden verlopen en vervolgens opnieuw worden verwerkt, waardoor dubbele gegevens worden veroorzaakt. Hier volgen enkele aandachtspunten bij het kiezen van een cloudFiles.maxFileAge:

  • Als uw stream na lange tijd opnieuw wordt opgestart, worden bestandsmeldingsgebeurtenissen die zijn opgehaald uit de wachtrij die ouder zijn dan cloudFiles.maxFileAge genegeerd. Als u een lijst met mappen gebruikt, worden bestanden die mogelijk zijn weergegeven tijdens de uitvallende tijd die ouder zijn dan cloudFiles.maxFileAge genegeerd.
  • Als u de modus voor het weergeven van mappen gebruikt cloudFiles.maxFileAgeen bijvoorbeeld instelt "1 month"op, stopt u de stream en start u de stream opnieuw op met cloudFiles.maxFileAge ingesteld op "2 months", bestanden die ouder zijn dan 1 maand, maar meer recent dan 2 maanden worden opnieuw verwerkt.

Als u deze optie de eerste keer instelt dat u de stream start, neemt u geen gegevens op die ouder zijn dan cloudFiles.maxFileAge, dus als u oude gegevens wilt opnemen, moet u deze optie niet instellen wanneer u de stream voor de eerste keer start. U moet deze optie echter instellen voor volgende uitvoeringen.

Reguliere backfills activeren met behulp van cloudFiles.backfillInterval

Automatische laadprogramma's kunnen asynchrone backfills met een bepaald interval activeren, bijvoorbeeld één dag om eenmaal per dag in te vullen of één week om een keer per week in te vullen. Meldingssystemen voor bestandsgebeurtenissen garanderen geen 100% levering van alle bestanden die zijn geüpload en bieden geen strikte SLA's voor de latentie van de bestandsgebeurtenissen. Databricks raadt u aan om reguliere backfills te activeren met autolader met behulp van de cloudFiles.backfillInterval optie om te garanderen dat alle bestanden in een bepaalde SLA worden gedetecteerd als volledigheid van gegevens een vereiste is. Het activeren van reguliere backfills veroorzaakt geen duplicaten.