ItemBatcher (Karte) - AWS Step Functions

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

ItemBatcher (Karte)

Das ItemBatcher Feld ist ein JSON Objekt, das angibt, dass eine Gruppe von Elementen in einer einzelnen untergeordneten Workflow-Ausführung verarbeitet werden soll. Verwenden Sie Batching, wenn Sie große CSV Dateien oder JSON Arrays oder große Gruppen von Amazon S3 S3-Objekten verarbeiten.

Das folgende Beispiel zeigt die Syntax des ItemBatcher Felds. In der folgenden Syntax ist die maximale Anzahl von Elementen, die jede untergeordnete Workflow-Ausführung verarbeiten sollte, auf 100 festgelegt.

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

Standardmäßig wird jedes Element in einer Datenmenge als Eingabe an einzelne untergeordnete Workflow-Ausführungen übergeben. Nehmen wir beispielsweise an, Sie geben eine JSON Datei als Eingabe an, die das folgende Array enthält:

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

Für die angegebene Eingabe erhält jede untergeordnete Workflow-Ausführung ein Array-Element als Eingabe. Das folgende Beispiel zeigt die Eingabe einer untergeordneten Workflow-Ausführung:

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

Um die Leistung und die Kosten Ihres Verarbeitungsauftrags zu optimieren, wählen Sie eine Stapelgröße, bei der die Anzahl der Artikel gegen die Verarbeitungszeit der Artikel abgewogen wird. Wenn Sie Batching verwenden, fügt Step Functions die Elemente einem Items-Array hinzu. Anschließend wird das Array als Eingabe an jede untergeordnete Workflow-Ausführung übergeben. Das folgende Beispiel zeigt einen Stapel von zwei Elementen, die als Eingabe an eine untergeordnete Workflow-Ausführung übergeben wurden:

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

Weitere Informationen zur Verwendung des ItemBatcher Felds in Ihren Workflows finden Sie in den folgenden Tutorials und Workshops:

Felder zur Angabe der Artikelstapelung

Um Artikel zu stapeln, geben Sie die maximale Anzahl der zu stapelnden Artikel, die maximale Chargengröße oder beides an. Sie müssen einen dieser Werte angeben, um Artikel zu stapeln.

Max. Anzahl Artikel pro Stapel

Gibt die maximale Anzahl von Elementen an, die jede untergeordnete Workflow-Ausführung verarbeitet. Der Interpreter begrenzt die Anzahl der im Items Array gebündelten Elemente auf diesen Wert. Wenn Sie sowohl eine Chargennummer als auch eine Größe angeben, reduziert der Interpreter die Anzahl der Elemente in einem Stapel, um zu verhindern, dass die angegebene Stapelgrößenbeschränkung überschritten wird.

Wenn Sie diesen Wert nicht angeben, sondern einen Wert für die maximale Batchgröße angeben, verarbeitet Step Functions in jeder untergeordneten Workflow-Ausführung so viele Elemente wie möglich, ohne die maximale Batchgröße in Byte zu überschreiten.

Stellen Sie sich beispielsweise vor, Sie führen eine Ausführung mit einer JSON Eingabedatei aus, die 1130 Knoten enthält. Wenn Sie für jeden Stapel einen maximalen Artikelwert von 100 angeben, erstellt Step Functions 12 Stapel. Davon enthalten 11 Stapel jeweils 100 Artikel, während der zwölfte Stapel die restlichen 30 Artikel enthält.

Alternativ können Sie die maximale Anzahl von Elementen für jeden Stapel als Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in Ihrer Statuseingabe für Distributed Map angeben. Dieser Pfad muss in eine positive Ganzzahl aufgelöst werden.

Beispielsweise angesichts der folgenden Eingabe:

{ "maxBatchItems": 500 }

Sie können die maximale Anzahl der zu stapelnden Elemente mithilfe eines Referenzpfads wie folgt angeben:

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

Sie können entweder das MaxItemsPerBatch oder das MaxItemsPerBatchPath Unterfeld angeben, aber nicht beide.

Maximal KBs pro Charge

Gibt die maximale Größe eines Batches in Byte an, bis zu 256KBs. Wenn Sie sowohl eine maximale Chargennummer als auch eine maximale Stapelgröße angeben, reduziert Step Functions die Anzahl der Artikel in einem Stapel, um zu verhindern, dass die angegebene Stapelgrößenbeschränkung überschritten wird.

Alternativ können Sie die maximale Batchgröße als Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in Ihrer Distributed Map-Statuseingabe angeben. Dieser Pfad muss in eine positive Ganzzahl aufgelöst werden.

Anmerkung

Wenn Sie Batching verwenden und keine maximale Batchgröße angeben, verarbeitet der Interpreter so viele Elemente, wie er verarbeiten kann, bis zu 256 KB pro untergeordneter Workflow-Ausführung.

Beispielsweise angesichts der folgenden Eingabe:

{ "batchSize": 131072 }

Sie können die maximale Batchgröße mithilfe eines Referenzpfads wie folgt angeben:

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

Sie können entweder das MaxInputBytesPerBatch oder das MaxInputBytesPerBatchPath Unterfeld angeben, aber nicht beide.

Batch-Eingabe

Optional können Sie auch eine feste JSON Eingabe angeben, die in jeden Batch aufgenommen werden soll, der an jede untergeordnete Workflow-Ausführung übergeben wird. Step Functions führt diese Eingabe mit der Eingabe für jede einzelne untergeordnete Workflow-Ausführung zusammen. Nehmen wir zum Beispiel die folgende feste Eingabe eines Datums der Faktenprüfung für eine Reihe von Elementen an:

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

Jede untergeordnete Workflow-Ausführung erhält Folgendes als Eingabe:

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