ItemBatcher (地圖) - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ItemBatcher (地圖)

ItemBatcher欄位是一個JSON物件,可指定在單一子工作流程執行中處理一組項目。處理大型CSV檔案或JSON陣列或大型 Amazon S3 物件集時,請使用批次處理。

下列範例顯示ItemBatcher欄位的語法。在下列語法中,每個子工作流程執行應處理的最大項目數設定為 100。

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

根據預設,資料集中的每個項目都會做為輸入傳遞至個別子工作流程執行。例如,假設您將JSON檔案指定為包含下列陣列的輸入:

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

對於給定的輸入,每個子工作流程執行都會接收一個陣列項目作為其輸入。下列範例顯示子工作流程執行的輸入:

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

若要協助最佳化處理工作的效能和成本,請選取一個批次大小,以平衡項目數目與項目處理時間。如果您使用批次處理,「Step Functions 數」會將項目新增至項目陣列。然後,它會將陣列作為輸入傳遞至每個子工作流程執行。下列範例顯示一個批次,其中包含兩個項目作為輸入傳遞至子工作流程執行:

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

若要進一步了解如何在工作流程中使用ItemBatcher欄位,請嘗試下列自學課程和研討會:

指定料號批次處理的欄位

若要批次處理項目,請指定要批次的最大項目數、最大批次大小或兩者。您必須為批次項目指定這些值之一。

每批次最大項目數

指定每個子工作流程執行處理的最大項目數。解釋器將數Items組中批處理的項目數限制為此值。如果同時指定批次編號和大小,解譯器會減少批次中的項目數,以避免超過指定的批次大小限制。

如果您未指定此值,但提供最大批次大小的值,則 Step Functions 會在每個子工作流程執行中處理盡可能多的項目,而不會超過以位元組為單位的最大批次大小。

例如,假設您使用包含 1130 個節點的輸入JSON檔執行。如果您指定每個批次 100 的最大料號值,「Step Functions」會建立 12 個批次。其中 11 批包含 100 個項目,而第十二批包含剩餘的 30 個項目。

或者,您可以將每個批次的最大項目指定為「分散式對映」狀態輸入中現有鍵值組的參考路徑。此路徑必須解析為正整數。

例如,假設有下列輸入:

{ "maxBatchItems": 500 }

您可以使用參照路徑指定要批次處理的最大項目數,如下所示:

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

您可以指定MaxItemsPerBatchMaxItemsPerBatchPath子欄位,但不能同時指定兩者。

KBs每批最大值

指定批次的大小上限 (以位元組為單位),最多 256 個KBs。如果同時指定最大批次編號和大小,Step Functions 會減少批次中的項目數,以避免超過指定的批次大小限制。

或者,您可以將最大批次大小指定為「分散式對映」狀態輸入中現有索引鍵值組的參考路徑。此路徑必須解析為正整數。

注意

如果您使用批次處理,但未指定批次大小上限,則解譯器會在每個子工作流程執行中處理最多 256 KB 的項目。

例如,假設有下列輸入:

{ "batchSize": 131072 }

您可以使用參照路徑指定最大批次大小,如下所示:

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

您可以指定MaxInputBytesPerBatchMaxInputBytesPerBatchPath子欄位,但不能同時指定兩者。

Batch 輸入

您也可以選擇性地指定固定JSON輸入,以包含在傳送至每個子項工作流程執行的每個批次中。Step Functions 會將此輸入與每個個別子工作流程執行的輸入合併。例如,給定下列項目陣列上事實檢查日期的固定輸入:

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

每個子工作流程執行都會接收下列項目作為輸入

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