ItemBatcher (Mappa) - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

ItemBatcher (Mappa)

Il ItemBatcher campo è un JSON oggetto che specifica di elaborare un gruppo di elementi in un'unica esecuzione del flusso di lavoro secondario. Utilizza il batch per elaborare CSV file o JSON array di grandi dimensioni o set di oggetti Amazon S3 di grandi dimensioni.

L'esempio seguente mostra la sintassi del campo. ItemBatcher Nella sintassi seguente, il numero massimo di elementi che ogni esecuzione del workflow secondario deve elaborare è impostato su 100.

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

Per impostazione predefinita, ogni elemento di un set di dati viene passato come input alle singole esecuzioni dei flussi di lavoro secondari. Ad esempio, si supponga di specificare come input un JSON file contenente il seguente array:

[ { "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" }, ... ]

Per l'input specificato, ogni esecuzione del workflow secondario riceve un elemento dell'array come input. L'esempio seguente mostra l'input dell'esecuzione di un workflow secondario:

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

Per ottimizzare le prestazioni e i costi del processo di elaborazione, selezionate una dimensione del batch che bilanci il numero di articoli rispetto al tempo di elaborazione degli articoli. Se si utilizza il batching, Step Functions aggiunge gli elementi a un array Items. Quindi passa l'array come input a ogni esecuzione del flusso di lavoro secondario. L'esempio seguente mostra un batch di due elementi passati come input all'esecuzione di un workflow secondario:

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

Per saperne di più sull'utilizzo del ItemBatcher campo nei flussi di lavoro, prova i seguenti tutorial e workshop:

Campi per specificare il raggruppamento degli articoli

Per raggruppare gli articoli, specificare il numero massimo di articoli da raggruppare, la dimensione massima del batch o entrambi. È necessario specificare uno di questi valori per raggruppare gli articoli.

Numero massimo di articoli per batch

Speciifica il numero massimo di elementi elaborati dall'esecuzione di ogni workflow secondario. L'interprete limita il numero di elementi raggruppati nell'Itemsarray a questo valore. Se si specificano sia il numero che la dimensione del batch, l'interprete riduce il numero di articoli in un batch per evitare di superare il limite di dimensione del batch specificato.

Se non si specifica questo valore ma si fornisce un valore per la dimensione massima del batch, Step Functions elabora il maggior numero possibile di elementi in ogni esecuzione del workflow secondario senza superare la dimensione massima del batch in byte.

Ad esempio, immaginate di eseguire un'esecuzione con un JSON file di input che contiene 1130 nodi. Se si specifica un valore massimo di articoli per ogni batch di 100, Step Functions crea 12 batch. Di questi, 11 batch contengono 100 articoli ciascuno, mentre il dodicesimo batch contiene i restanti 30 articoli.

In alternativa, è possibile specificare il numero massimo di elementi per ogni batch come percorso di riferimento a una coppia chiave-valore esistente nell'input di stato della Mappa distribuita. Questo percorso deve risolversi in un numero intero positivo.

Ad esempio, con il seguente input:

{ "maxBatchItems": 500 }

È possibile specificare il numero massimo di articoli da raggruppare utilizzando un percorso di riferimento come segue:

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

È possibile specificare il MaxItemsPerBatchPath campo MaxItemsPerBatch o il sottocampo, ma non entrambi.

Massimo KBs per batch

Specifica la dimensione massima di un batch in byte, fino a 256. KBs Se si specificano sia il numero di lotto che la dimensione massimi, Step Functions riduce il numero di articoli in un batch per evitare di superare il limite di dimensione del batch specificato.

In alternativa, è possibile specificare la dimensione massima del batch come percorso di riferimento per una coppia chiave-valore esistente nell'input di stato della Mappa Distribuita. Questo percorso deve risolversi in un numero intero positivo.

Nota

Se si utilizza il batch e non si specifica una dimensione massima per il batch, l'interprete elabora il maggior numero di elementi possibile elaborare, fino a 256 KB per ogni esecuzione del workflow secondario.

Ad esempio, con il seguente input:

{ "batchSize": 131072 }

È possibile specificare la dimensione massima del batch utilizzando un percorso di riferimento come segue:

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

È possibile specificare il MaxInputBytesPerBatchPath campo MaxInputBytesPerBatch o il sottocampo, ma non entrambi.

Input in batch

Facoltativamente, è anche possibile specificare un JSON input fisso da includere in ogni batch passato a ogni esecuzione del workflow secondario. Step Functions unisce questo input con l'input per ogni singola esecuzione del workflow secondario. Ad esempio, dato il seguente inserimento fisso di una data di verifica dei fatti su una serie di elementi:

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

Ogni esecuzione del flusso di lavoro secondario riceve quanto segue come input:

{ "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" }, ... ] }