ItemBatcher - 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

Le ItemBatcher champ est un objet JSON qui indique de traiter un groupe d'éléments lors d'une seule exécution de flux de travail enfant. Utilisez le traitement par lots lors du traitement de gros fichiers CSV ou de tableaux JSON, 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 défini sur 100.

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

Par défaut, chaque élément d'un ensemble de données est transmis en tant qu'entrée aux exécutions individuelles du flux de travail pour enfants. Supposons, par exemple, que vous indiquiez 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 tant qu'entrée. L'exemple suivant montre la saisie 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 travail 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 tant qu'entrée à chaque exécution de 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 l'atelier suivants :

Champs permettant de spécifier le regroupement des 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 regrouper les articles.

Nombre maximum d'articles par lot

Spécifie le nombre maximum d'éléments que chaque exécution de flux de travail enfant traite. 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'éléments d'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 de flux de travail enfant sans dépasser la taille de lot maximale en octets.

Par exemple, imaginez que vous exécutez une exécution avec un fichier JSON d'entrée contenant 1130 nœuds. Si vous spécifiez une valeur maximale d'éléments pour chaque lot de 100, 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 en tant que chemin de référence vers une paire clé-valeur existante dans votre entrée d'état de carte distribuée. Ce chemin doit être converti 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 à l'aide d'un chemin de référence comme suit :

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

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

Nombre maximal de Ko par lot

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

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

Note

Si vous utilisez le traitement par lots sans spécifier de taille de lot maximale, l'interpréteur traite autant d'éléments qu'il peut traiter jusqu'à 256 Ko lors de chaque exécution d'un flux de travail enfant.

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

{ "batchSize": 131072 }

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

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

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

Entrée par lots

Vous pouvez également 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" }, ... ] }