Aller au contenu principal

Configurer la taille de batch Structured Streaming sur Databricks

Cette page explique comment utiliser les contrôles d'admission pour maintenir une taille de batch constante pour les queries de streaming.

Les contrôles d'admission limitent le débit d'entrée pour les query Structured Streaming, ce qui peut aider à maintenir une taille de batch cohérente et à empêcher les grands batchs de causer du spill et des retards en cascade dans le traitement des micro-batchs.

Databricks propose les mêmes options pour contrôler les tailles de batch Structured Streaming pour Delta Lake et Auto Loader.

remarque

Vous pouvez modifier les paramètres de contrôle d'admission sans Reset le point de contrôle pour une requête de streaming. Consultez l’article dédié à la récupération après des modifications dans une query Structured Streaming.

La modification des paramètres de contrôle d'admission pour augmenter ou diminuer la taille des batchs a des implications sur les performances. Pour optimiser votre charge de travail, vous devrez peut-être ajuster vos configurations de compute.

attention

Si un microbatch est planifié lorsqu'un stream s'arrête, toute modification des contrôles d'admission ne prend effet qu'après la fin du microbatch planifié. Par exemple, lorsqu'un stream s'arrête après une transaction ayant échoué, il peut être nécessaire de supprimer le point de contrôle pour forcer le stream à retraiter la transaction avec les nouveaux contrôles d'admission. Ce comportement se produit parce que Structured Streaming est idempotent et que les microbatches doivent contenir les mêmes données lors des exécutions répétées. Consultez la sémantique de Structured Streaming.

Limiter le débit d'entrée avec maxFilesPerTrigger

Le paramètre maxFilesPerTrigger (ou cloudFiles.maxFilesPerTrigger pour Auto Loader) spécifie une limite supérieure pour le nombre de fichiers traités dans chaque micro-batch. Pour Delta Lake et Auto Loader, la default est 1000. (Notez que cette option est également présente dans Apache Spark pour d'autres sources de fichiers, où il n'y a pas de maximum par default.)

Limiter le taux d'entrée avec maxBytesPerTrigger

Le paramètre maxBytesPerTrigger (ou cloudFiles.maxBytesPerTrigger pour Auto Loader) définit un « maximum souple » pour la quantité de données traitées dans chaque micro-batch. Cela signifie qu'un batch traite environ cette quantité de données et peut en traiter plus que la limite afin de faire progresser la query en streaming lorsque la plus petite unité d'entrée est supérieure à cette limite. Il n'y a pas de default pour ce paramètre.

Par exemple, si vous spécifiez une chaîne d'octets telle que 10g pour limiter chaque microbatch à 10 Go de données et que vous avez des fichiers de 3 Go chacun, Databricks traite 12 Go dans un microbatch.

Définition de plusieurs vitesses d'entrée ensemble

Si vous utilisez maxBytesPerTrigger conjointement avec maxFilesPerTrigger, le micro-batch traite les données jusqu'à ce qu'il atteigne la limite inférieure de maxFilesPerTrigger ou de maxBytesPerTrigger.

Limitation des débits d'entrée pour les autres sources Structured Streaming

Les sources de streaming telles qu'Apache Kafka ont chacune des limites d'entrée personnalisées, telles que maxOffsetsPerTrigger. Pour plus de détails, consultez les connecteurs standard dans Lakeflow Connect.