Accéder au contenu principal Passer au contenu complémentaire

Exécution en continu (streaming)

L'exécution en continu vous permet de traiter des quantités illimitées de données. Sans l'exécution en continu, l'entrée de la transformation est entièrement mise en mémoire avant que la transformation ne soit exécutée, ce qui limite la quantité de données à transformer à ce que la mémoire disponible peut contenir. Si vous désactivez l'exécution en continu pour les fichiers d'entrée dont la taille dépasse 500 Mo, cela provoque une erreur.

Cette documentation s'applique uniquement aux composants tHMap et cMap. Pour les composants Spark Batch comme le tHMapFile ou le tHMapInput, vous n'avez pas besoin d'activer l'exécution en continu.

Paramètres des composants

  • Pour les composants traitant des fichiers volumineux, comme le tFileInputRaw, vous devez sélectionner le paramètre Stream the file (Lire le fichier) dans la vue Basic settings (Paramètres simples). Cela permet d'éviter de lire le fichier d'entrée complet en tant que chaîne de caractères ou tableau d'octets en mémoire :
    Vue Basic settings (Paramètres simples) du tFileInputRaw.
  • Vous devez toujours utiliser le tHMap avec le tFileOutputRaw. Lorsque vous utilisez le tHMap, vous devez sélectionner le paramètre InputStream (single column) (Flux d'entrée (colonne unique)) dans la vue Basic settings (Paramètres simples). Cela permet d'éviter de stocker la sortie complète en mémoire et assure que le tFileOutputRaw commence l'écriture sans attendre la production de toutes les sorties par le tHMap :
    Vue Basic settings (Paramètres simples) du tHMap.

Fonctionnement de l'exécution en continu

L'exécution en continu du tHMap fonctionne en accumulant des blocs de données d'entrée puis en exécutant la transformation séparément sur chaque bloc.

Vous spécifiez que la transformation doit être diffusée en continu en cochant la propriété Stream Input (Diffuser l'entrée en continu) dans la fonction SimpleLoop :
Boîte de dialogue Expression SimpleLoop Properties.
Ce faisant, des transformations (xQuery ou SQL) sont exécutées tous les 1 000 éléments récurrents, ou à chaque bloc. Par défaut, un comptage de bloc est défini sur 1 000. Vous pouvez modifier ce comportement en utilisant une variable de contexte nommée transform_streaming_block_count et en ajoutant une valeur numérique positive :
Vue Context (Contexte) d'un Job.

Limitations

De plus, quelques informations importantes sont listées lorsque vous sélectionnez la propriété Stream Input (Diffuser l'entrée en continu) :
  • Une seule fonction SimpleLoop dans votre map peut avoir la propriété Stream Input (Diffuser l'entrée en continu) activée. Si elle est activée plusieurs fois, seul le niveau le plus haut sera pris en compte. Les autres niveaux seront ignorés.
  • L'élément de boucle sur lequel vous avez activé la propriété Stream Input (Diffuser l'entrée en continu) ne doit pas avoir d'élément de boucle sœur. Cela s'applique également à tous les ancêtres de l'élément de boucle. Ainsi, il est impossible de diffuser en continu une map avec plusieurs sorties.
  • Si vous cochez la propriété Stream Input (Diffuser l'entrée en continu) dans la fonction SimpleLoop, vous ne pouvez pas utiliser les clés de tri, l'action de tri ne pouvant pas être effectuée lors de la diffusion en continu.
  • Si vous cochez la propriété Stream Input (Diffuser l'entrée en continu) dans la fonction SimpleLoop et que vous sélectionnez également un élément enfant distinct, l'entrée est déjà triée par l'élément enfant de manière à ce que le calcul distinct puisse être effectué sans tri supplémentaire.
Voici un exemple de sortie résumant les informations ci-dessus :
root
  |-row(0:*)              can stream
    |-a
    |-b(0:*)              can stream (if row does not stream)
      |-c
      |-d(0:*)            cannot stream (has sibling loop h)
        |-e
        |-f(0:*)          cannot stream (parent d has sibling loop h)
          |-g(0:*)        cannot stream (grand parent d has sibling loop h)
      |-h(0:0)            cannot stream (has sibling loop d)

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.