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 :
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 :
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 :
spark.sql.shuffle.partitions <number>