Aller au contenu principal

Limitations du mode temps réel

Cette page décrit les limitations connues pour le mode temps réel dans Structured Streaming.

Limitations de la source

Pour Kinesis, le mode temps réel ne prend pas en charge le mode d’interrogation. De plus, des répartitions fréquentes peuvent avoir un impact négatif sur la latence.

Limitations d'Union

L'opérateur Union présente certaines limitations :

  • L'auto-union n'est pas prise en charge :

    • Pour Kafka, vous ne pouvez pas utiliser le même objet DataFrame source et unir les DataFrames dérivés de celui-ci. Comme solution de contournement, utilisez différents DataFrames qui lisent à partir de la même source.
    • Pour Kinesis, vous ne pouvez pas unir les DataFrames dérivés de la même source Kinesis avec la même configuration. Comme solution de contournement, au lieu d'utiliser différents DataFrames, vous pouvez attribuer une option consumerName différente à chaque DataFrame.
  • Les opérateurs avec état (par exemple, aggregate, deduplicate, transformWithState) ne peuvent pas être définis avant l'Union.

  • L'union avec les sources batch n'est pas prise en charge.

mapPartitions limitation

mapPartitions en Scala et dans les APIs Python similaires (mapInPandas, mapInArrow) prend un itérateur de toute la partition d'entrée et produit un itérateur de toute la sortie avec un mappage arbitraire entre l'entrée et la sortie. Ces APIs peuvent causer des problèmes de performances en mode temps réel en bloquant toute la sortie, ce qui augmente la latence. La sémantique de ces APIs ne prend pas bien en charge la propagation des filigranes.

Utilisez des UDF scalaires combinées à Transformer des types de données complexes ou à filter pour obtenir des fonctionnalités similaires.

transformWithStateInPandas non pris en charge

L'opérateur transformWithStateInPandas n'est pas pris en charge en mode temps réel. Si vous avez besoin d'un traitement avec état personnalisé en Python en mode temps réel, utilisez l'API transformWithState basée sur les lignes à la place. L'API basée sur les lignes offre les mêmes capacités de traitement avec état en utilisant des objets Row plutôt que des DataFrames pandas.

Consultez transformWithState en mode temps réel pour plus de détails sur le comportement de transformWithState en mode temps réel, et Exemples de mode temps réel pour un exemple Python fonctionnel utilisant l'API basée sur les lignes.