本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
欄位,請嘗試下列自學課程和研討會:
單元 14 中的大規模並行化與分佈式地圖
-工作坊的數據處理 AWS Step Functions
指定料號批次處理的欄位
若要批次處理項目,請指定要批次的最大項目數、最大批次大小或兩者。您必須為批次項目指定這些值之一。
- 每批次最大項目數
指定每個子工作流程執行處理的最大項目數。解釋器將數
Items
組中批處理的項目數限制為此值。如果同時指定批次編號和大小,解譯器會減少批次中的項目數,以避免超過指定的批次大小限制。如果您未指定此值,但提供最大批次大小的值,則 Step Functions 會在每個子工作流程執行中處理盡可能多的項目,而不會超過以位元組為單位的最大批次大小。
例如,假設您使用包含 1130 個節點的輸入JSON檔執行。如果您指定每個批次 100 的最大料號值,「Step Functions」會建立 12 個批次。其中 11 批包含 100 個項目,而第十二批包含剩餘的 30 個項目。
或者,您可以將每個批次的最大項目指定為「分散式對映」狀態輸入中現有鍵值組的參考路徑。此路徑必須解析為正整數。
例如,假設有下列輸入:
{
"maxBatchItems"
:500
}您可以使用參照路徑指定要批次處理的最大項目數,如下所示:
{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": {
"MaxItemsPerBatchPath"
:"$.maxBatchItems"
} ... ... } }重要
您可以指定
MaxItemsPerBatch
或MaxItemsPerBatchPath
子欄位,但不能同時指定兩者。- KBs每批最大值
指定批次的大小上限 (以位元組為單位),最多 256 個KBs。如果同時指定最大批次編號和大小,Step Functions 會減少批次中的項目數,以避免超過指定的批次大小限制。
或者,您可以將最大批次大小指定為「分散式對映」狀態輸入中現有索引鍵值組的參考路徑。此路徑必須解析為正整數。
注意
如果您使用批次處理,但未指定批次大小上限,則解譯器會在每個子工作流程執行中處理最多 256 KB 的項目。
例如,假設有下列輸入:
{
"batchSize"
:131072
}您可以使用參照路徑指定最大批次大小,如下所示:
{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": {
"MaxInputBytesPerBatchPath"
:"$.batchSize"
} ... ... } }重要
您可以指定
MaxInputBytesPerBatch
或MaxInputBytesPerBatchPath
子欄位,但不能同時指定兩者。- 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" }, ... ] }