Partage via


Configurer des intervalles de déclencheur Structured Streaming

Apache Spark Structured Streaming traite les données de manière incrémentielle, Le contrôle de l’intervalle de déclenchement pour le traitement par lots vous permet d’utiliser Structured Streaming pour des charges de travail incluant un traitement en quasi-temps réel, une actualisation des bases de données toutes les 5 minutes ou une fois par heure, ou un traitement par lot de toutes les nouvelles données d’une journée ou d’une semaine.

Étant donné que le Chargeur automatique Databricks utilise Structured Streaming pour charger des données, la compréhension du fonctionnement des déclencheurs vous offre un maximum de flexibilité pour contrôler les coûts tout en ingérant des données à la fréquence souhaitée.

Spécification d’intervalles de déclencheur basés sur le temps

Structured Streaming fait référence aux intervalles de déclencheur basés sur le temps en tant que « micro-lots à intervalle fixe ». À l’aide du mot clé processingTime, spécifiez une durée en tant que chaîne, telle que .trigger(processingTime='10 seconds').

Quand vous spécifiez un intervalle trigger trop petit (moins de quelques dizaines de secondes), le système peut effectuer des vérifications superflues pour voir si de nouvelles données arrivent. Configurez votre temps de traitement pour équilibrer les exigences de latence et le taux d’arrivée des données dans la source.

Configuration du traitement par lots incrémentiel

Important

Dans Databricks Runtime 11.3 LTS et versions ultérieures, le paramètre Trigger.Once est déconseillé. Databricks vous recommande d’utiliser Trigger.AvailableNow pour toutes les charges de travail de traitement par lots incrémentiel.

L’option de déclencheur désormais disponible utilise tous les enregistrements disponibles en tant que lot incrémentiel avec la possibilité de configurer la taille du lot avec des options telles que maxBytesPerTrigger (les options de dimensionnement varient selon la source de données).

Azure Databricks prend en charge l’utilisation Trigger.AvailableNow pour le traitement par lots incrémentiel à partir de nombreuses sources Structured Streaming. Le tableau suivant inclut la version minimale requise de Databricks Runtime prise en charge pour chaque source de données :

Source Version minimale de Databricks Runtime
Sources de fichiers (JSON, Parquet, etc.) 9.1 LTS
Delta Lake 10.4 LTS
Chargeur automatique 10.4 LTS
Apache Kafka 10.4 LTS
Kinesis 13.1

Quel est l’intervalle de déclencheur par défaut ?

Structured Streaming est défini par défaut sur des micro-lots à intervalle fixe de 500 ms. Databricks recommande de toujours spécifier un trigger adapté afin de réduire les coûts associés à la vérification de l’arrivée de nouvelles données et au traitement de lots sous-dimensionnés.

Modification des intervalles de déclenchement entre des exécutions

Vous pouvez modifier l’intervalle de déclenchement entre les exécutions lors de l’utilisation du même point de contrôle.

Si un travail Structured Streaming s’arrête pendant qu’un micro-lot est en cours de traitement, ce micro-lot doit être terminé avant que le nouvel intervalle de déclenchement s’applique. Par conséquent, vous pouvez observer un traitement de micro-lot avec les paramètres précédemment spécifiés après avoir modifié l’intervalle de déclenchement.

Quand vous passez d’un intervalle de temps à l’utilisation de AvailableNow, cela peut entraîner le traitement d’un micro-lot avant le traitement de tous les enregistrements disponibles sous la forme d’un lot incrémentiel.

Quand vous passez d’AvailableNow à un intervalle de temps, cela peut entraîner la poursuite du traitement de tous les enregistrements disponibles au moment du déclenchement du dernier travail AvailableNow. Il s’agit du comportement attendu.

Remarque

Si vous essayez de récupérer après un échec de requête associé à un lot incrémentiel, le fait de modifier l’intervalle de déclenchement ne résout pas ce problème puisque le lot doit toujours être terminé. Databricks recommande d’effectuer un scale-up de la capacité de calcul utilisée pour traiter le lot et tenter de résoudre le problème. Dans de rares cas, vous devrez peut-être redémarrer le flux avec un nouveau point de contrôle.

Qu’est-ce que le mode de traitement continu ?

Apache Spark prend en charge un intervalle de déclencheur supplémentaire appelé Traitement continu. Ce mode est classé comme expérimental depuis Spark 2.3 ; consultez l’équipe de votre compte Azure Databricks pour vous assurer que vous comprenez les compromis de ce modèle de traitement.

Notez que ce mode de traitement continu n’a rien à voir avec le traitement continu appliqué dans Delta Live Tables.