Aller au contenu principal

Optimiser les queries de streaming sans état

Cette page décrit les fonctionnalités d'optimisation disponibles pour les queries de streaming sans état dans Databricks Runtime 18,0 et versions ultérieures.

Les queries Structured Streaming sans état traitent les données sans maintenir d'état intermédiaire. Ces queries n'utilisent pas d'Opérations avec état telles que les agrégations de streaming, dropDuplicates ou les jointures Stream-Stream. Les exemples incluent les query qui utilisent des jointures stream-statiques, MERGE INTO avec des tables Delta Lake, et d'autres opérations qui ne suivent que les lignes traitées de la source au récepteur.

Exécution adaptative des query et mélange optimisé automatiquement

Databricks prend en charge l'exécution adaptative de requêtes (AQE) et le brassage auto-optimisé (AOS) pour les requêtes de streaming sans état. Ces fonctionnalités aident à optimiser les charges de travail en streaming qui utilisent des jointures stream-static, MERGE INTO avec des tables Delta Lake, et des opérations similaires.

Pour activer l'AQE pour les streaming queries sans état, définissez la configuration suivante sur true. Ceci est activé par default :

ini
spark.sql.adaptive.streaming.stateless.enabled true

Pour activer AOS pour les requêtes de streaming sans état, activez AQE et définissez la configuration suivante :

ini
spark.sql.shuffle.partitions auto

Modifier les partitions de shuffle lors du redémarrage de la query

Les requêtes streaming sans état prennent en charge la modification du nombre de partitions de brassage lorsque vous redémarrez une query. Cela vous permet d'ajuster le parallélisme pour s'adapter à des volumes d'entrée variables.

Cette fonctionnalité est particulièrement utile pour les scénarios de remplissage historique. Par exemple, vous pouvez traiter le remplissage historique avec un parallélisme plus élevé, et ensuite réduire le parallélisme pour les entrées en temps réel.

Pour modifier le nombre de partitions de shuffle, définissez la configuration suivante à la valeur souhaitée et redémarrez la query :

ini
spark.sql.shuffle.partitions <number>