Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
ItemBatcher (Mapa)
El ItemBatcher
campo es un JSON objeto que especifica el procesamiento de un grupo de elementos en una sola ejecución de flujo de trabajo secundario. Utilice el procesamiento por lotes cuando procese CSV archivos o JSON matrices de gran tamaño, o conjuntos grandes de objetos de Amazon S3.
En el ejemplo siguiente se muestra la sintaxis del campo ItemBatcher
. En la siguiente sintaxis, el número máximo de elementos que debe procesar cada ejecución de flujo de trabajo secundario se establece en 100.
{
"ItemBatcher": {
"MaxItemsPerBatch": 100
}
}
De forma predeterminada, cada elemento de un conjunto de datos se pasa como entrada a las ejecuciones individuales de los flujos de trabajo secundarios. Por ejemplo, supongamos que especifica un JSON archivo como entrada que contiene la siguiente matriz:
[
{
"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"
},
...
]
Para la entrada dada, cada ejecución del flujo de trabajo secundario recibe un elemento de matriz como entrada. En el siguiente ejemplo, se muestra la entrada de la ejecución de un flujo de trabajo secundario:
{
"verdict": "true",
"statement_date": "6/11/2008",
"statement_source": "speech"
}
Para ayudar a optimizar el rendimiento y el costo del trabajo de procesamiento, seleccione un tamaño de lote que equilibre la cantidad de elementos con el tiempo de procesamiento de los elementos. Si utiliza el procesamiento por lotes, Step Functions añade los elementos a una matriz de elementos. A continuación, pasa la matriz como entrada a cada ejecución del flujo de trabajo secundario. En el siguiente ejemplo se muestra un lote de dos elementos que se pasan como entrada a la ejecución de un flujo de trabajo secundario:
{
"Items": [
{
"verdict": "true",
"statement_date": "6/11/2008",
"statement_source": "speech"
},
{
"verdict": "false",
"statement_date": "6/7/2022",
"statement_source": "television"
}
]
}
sugerencia
Para obtener más información sobre el uso del campo ItemBatcher
en los flujos de trabajo, pruebe los siguientes tutoriales y talleres:
Procesamiento de un lote completo de datos dentro de una función de Lambda
Paralelización a gran escala con un mapa distribuido en el
módulo 14: Procesamiento de datos del taller AWS Step Functions
Campos para especificar el procesamiento por lotes de elementos
Para agrupar elementos, especifique el número máximo de elementos a agrupar, el tamaño máximo del lote o ambos. Debe especificar uno de estos valores para agrupar los elementos.
- Número máximo de elementos por lote
Especifica el número máximo de elementos que procesa cada ejecución de flujo de trabajo secundario. El intérprete limita el número de elementos agrupados en la matriz
Items
a este valor. Si se especifica un número y un tamaño de lote, el intérprete reduce el número de elementos de un lote para evitar superar el límite de tamaño de lote especificado.Si no se especifica este valor, pero se proporciona un valor para el tamaño máximo del lote, Step Functions procesa tantos elementos como sea posible en cada ejecución del flujo de trabajo secundario sin superar el tamaño máximo del lote en bytes.
Por ejemplo, imagine que ejecuta una ejecución con un JSON archivo de entrada que contiene 1130 nodos. Si se especifica un valor máximo de elementos para cada lote de 100, Step Functions crea 12 lotes. De estos, 11 lotes contienen 100 elementos cada uno, mientras que el duodécimo lote contiene los 30 elementos restantes.
También puede especificar el número máximo de elementos para cada lote como una ruta de referencia a un par clave-valor existente en la entrada de estado Map Distributed. Esta ruta debe convertirse en un número entero positivo.
Por ejemplo, en el caso de la entrada siguiente:
{
"maxBatchItems"
:500
}Puede especificar el número máximo de elementos que va a agrupar de la siguiente manera:
{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": {
"MaxItemsPerBatchPath"
:"$.maxBatchItems"
} ... ... } }importante
Puede especificar el subcampo
MaxItemsPerBatch
oMaxItemsPerBatchPath
, pero no ambos.- Máximo KBs por lote
Especifica el tamaño máximo de un lote en bytes, hasta 256KBs. Si se especifica un número y un tamaño de lote máximos, Step Functions reduce el número de elementos de un lote para evitar superar el límite de tamaño de lote especificado.
También puede especificar el número máximo de elementos para cada lote como una ruta de referencia a un par clave-valor existente en la entrada de estado Map Distributed. Esta ruta debe convertirse en un número entero positivo.
nota
Si se utiliza el procesamiento por lotes y no se especifica un tamaño de lote máximo, el intérprete procesa tantos elementos como pueda procesar (hasta 256 KB) en cada ejecución del flujo de trabajo secundario.
Por ejemplo, en el caso de la entrada siguiente:
{
"batchSize"
:131072
}Puede especificar el tamaño máximo del lote mediante una ruta de referencia de la siguiente manera:
{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": {
"MaxInputBytesPerBatchPath"
:"$.batchSize"
} ... ... } }importante
Puede especificar el subcampo
MaxInputBytesPerBatch
oMaxInputBytesPerBatchPath
, pero no ambos.- Entrada por lotes
Si lo desea, también puede especificar una JSON entrada fija para incluirla en cada lote que se pase a la ejecución de cada flujo de trabajo secundario. Step Functions fusiona esta entrada con la entrada de cada ejecución individual del flujo de trabajo secundario. Por ejemplo, dada la siguiente entrada fija de una fecha de verificación de datos en una serie de elementos:
"ItemBatcher": {
"BatchInput": {
"factCheck"
:"December 2022"
} }Cada ejecución de un flujo de trabajo secundario recibe lo siguiente como entrada:
{ "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" }, ... ] }