ItemBatcher (Carte) - AWS Step Functions

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

ItemBatcher (Carte)

Gestion de l'état et transformation des données

Le ItemBatcher champ est un objet JSON qui indique de traiter un groupe d'éléments dans le cadre d'une exécution de flux de travail enfant unique. Utilisez le traitement par lots lors du traitement de fichiers CSV ou de tableaux JSON volumineux, ou de grands ensembles d'objets Amazon S3.

L'exemple suivant montre la syntaxe du ItemBatcher champ. Dans la syntaxe suivante, le nombre maximum d'éléments que chaque exécution de flux de travail enfant doit traiter est fixé à 100.

{ "ItemBatcher": { "MaxItemsPerBatch": 100 } }

Par défaut, chaque élément d'un ensemble de données est transmis en tant qu'entrée à des exécutions de flux de travail enfants individuelles. Supposons, par exemple, que vous spécifiez un fichier JSON en entrée contenant le tableau suivant :

[ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "true", "statement_date": "5/18/2016", "statement_source": "news" }, ... ]

Pour l'entrée donnée, chaque exécution de flux de travail enfant reçoit un élément de tableau en entrée. L'exemple suivant montre l'entrée d'une exécution de flux de travail enfant :

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

Pour optimiser les performances et le coût de votre tâche de traitement, sélectionnez une taille de lot qui équilibre le nombre d'articles par rapport au temps de traitement des articles. Si vous utilisez le traitement par lots, Step Functions ajoute les éléments à un tableau d'éléments. Il transmet ensuite le tableau en entrée à chaque exécution du flux de travail enfant. L'exemple suivant montre un lot de deux éléments transmis en entrée à l'exécution d'un flux de travail enfant :

{ "Items": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" } ] }
Astuce

Pour en savoir plus sur l'utilisation du ItemBatcher champ dans vos flux de travail, essayez les didacticiels et ateliers suivants :

Champs pour spécifier le traitement par lots d'articles

Pour regrouper des articles, spécifiez le nombre maximum d'articles à regrouper, la taille maximale du lot, ou les deux. Vous devez spécifier l'une de ces valeurs pour les articles par lots.

Nombre maximum d'articles par lot

Spécifie le nombre maximum d'éléments traités par chaque exécution de flux de travail enfant. L'interpréteur limite le nombre d'éléments groupés dans le Items tableau à cette valeur. Si vous spécifiez à la fois un numéro de lot et une taille, l'interpréteur réduit le nombre d'articles dans un lot pour éviter de dépasser la limite de taille de lot spécifiée.

Si vous ne spécifiez pas cette valeur mais que vous fournissez une valeur pour la taille de lot maximale, Step Functions traite autant d'éléments que possible lors de chaque exécution du flux de travail enfant sans dépasser la taille de lot maximale en octets.

Par exemple, imaginez que vous exécutiez une exécution avec un fichier JSON d'entrée contenant 1 130 nœuds. Si vous spécifiez une valeur maximale de 100 articles pour chaque lot, Step Functions crée 12 lots. Parmi ceux-ci, 11 lots contiennent 100 articles chacun, tandis que le douzième lot contient les 30 articles restants.

Vous pouvez également spécifier le nombre maximum d'éléments pour chaque lot comme chemin de référence vers une paire clé-valeur existante dans l'entrée d'état de votre carte distribuée. Ce chemin doit être résolu en un entier positif.

Par exemple, avec les données d'entrée suivantes :

{ "maxBatchItems": 500 }

Vous pouvez spécifier le nombre maximum d'articles à regrouper en utilisant un chemin de référence (JSONPath uniquement) comme suit :

{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": { "MaxItemsPerBatchPath": "$.maxBatchItems" } ... ... } }

Pour les états JSONatabasés, vous pouvez également fournir une JSONata expression dont le résultat est un entier positif.

Important

Vous pouvez spécifier le MaxItemsPerBatch ou le MaxItemsPerBatchPath (JSONPath only) sous-champ, mais pas les deux.

Nombre maximal de KiB par lot

Spécifie la taille maximale d'un lot en octets, jusqu'à 256 KiB. Si vous spécifiez à la fois un numéro de lot et une taille maximum, Step Functions réduit le nombre d'articles dans un lot pour éviter de dépasser la limite de taille de lot spécifiée.

Vous pouvez également spécifier la taille de lot maximale comme chemin de référence vers une paire clé-valeur existante dans l'entrée d'état de votre carte distribuée. Ce chemin doit être résolu en un entier positif.

Note

Si vous utilisez le traitement par lots et que vous ne spécifiez pas de taille de lot maximale, l'interpréteur traite autant d'éléments qu'il peut traiter jusqu'à 256 KiB lors de chaque exécution de flux de travail enfant.

Par exemple, avec les données d'entrée suivantes :

{ "batchSize": 131072 }

Vous pouvez spécifier la taille de lot maximale à l'aide d'un chemin de référence comme suit :

{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": { "MaxInputBytesPerBatchPath": "$.batchSize" } ... ... } }

Pour les états JSONatabasés, vous pouvez également fournir une JSONata expression dont le résultat est un entier positif.

Important

Vous pouvez spécifier le sous-champ MaxInputBytesPerBatch ou le MaxInputBytesPerBatchPath (JSONPath seul) sous-champ, mais pas les deux.

Saisie par lots

Vous pouvez également éventuellement spécifier une entrée JSON fixe à inclure dans chaque lot transmis à chaque exécution de flux de travail enfant. Step Functions fusionne cette entrée avec celle de chaque exécution de flux de travail enfant individuelle. Par exemple, étant donné la saisie fixe suivante d'une date de vérification des faits sur un tableau d'éléments :

"ItemBatcher": { "BatchInput": { "factCheck": "December 2022" } }

Chaque exécution d'un flux de travail enfant reçoit les informations suivantes en entrée :

{ "BatchInput": { "factCheck": "December 2022" }, "Items": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, ... ] }

Pour les états JSONatabasés, vous pouvez fournir des JSONata expressions directement ou utiliser des JSONata expressions dans des objets ou des tableaux JSON. BatchInput