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

Das ItemBatcher Feld ist ein JSON-Objekt, das angibt, dass eine Gruppe von Elementen in einer einzigen 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-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 soll, auf 100 festgelegt.

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

Standardmäßig wird jedes Element in einem Datensatz 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 übergibt es das Array als Eingabe an jede untergeordnete Workflow-Ausführung. Das folgende Beispiel zeigt einen Stapel von zwei Elementen, die als Eingabe an eine untergeordnete Workflow-Ausführung übergeben werden:

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

Um mehr über die Verwendung des ItemBatcher Felds in Ihren Workflows zu erfahren, probieren Sie die folgenden Tutorials und Workshops aus:

Felder zur Angabe der Artikelstapelung

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

Max. Artikel pro Charge

Gibt die maximale Anzahl von Elementen an, die jede untergeordnete Workflow-Ausführung verarbeitet. Der Interpreter begrenzt die Anzahl der im Items Array gestapelten Elemente auf diesen Wert. Wenn Sie sowohl eine Chargennummer als auch eine Chargengröße angeben, reduziert der Interpreter die Anzahl der Artikel in einem Stapel, um eine Überschreitung der angegebenen Stapelgrößenbeschränkung zu vermeiden.

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 zum Beispiel 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 Chargen jeweils 100 Artikel, während die zwölfte Charge die restlichen 30 Artikel enthält.

Alternativ können Sie die maximale Anzahl an Elementen für jeden Stapel als Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in Ihrer Distributed-Map-Statuseingabe angeben. Dieser Pfad muss zu einer positiven Ganzzahl führen.

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.

Max. KB pro Stapel

Gibt die maximale Größe eines Stapels in Byte an, bis zu 256 KB. Wenn Sie sowohl eine maximale Chargennummer als auch eine maximale Chargengröße angeben, reduziert Step Functions die Anzahl der Artikel in einem Stapel, um eine Überschreitung der angegebenen Stapelgrößenbeschränkung zu vermeiden.

Alternativ können Sie die maximale Batchgröße als Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in Ihrer Distributed-Map-State-Eingabe angeben. Dieser Pfad muss zu einer positiven Ganzzahl führen.

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 in jeder untergeordneten Workflow-Ausführung.

Beispielsweise angesichts der folgenden Eingabe:

{ "batchSize": 131072 }

Sie können die maximale Stapelgröß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. Zum Beispiel bei der folgenden festen Eingabe eines Datums für die Faktenprüfung für eine Reihe von Elementen:

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