Cómo incrementar un contador en Argo Workflow?
He escrito un dag de argo para activar un trabajo de spark en recursión hasta que se cumpla la condición. Tengo un parámetro de contador que debe incrementarse en 1 después de cada finalización exitosa del trabajo de spark. Pero esto no está sucediendo. Aquí está el fragmento de mi flujo de trabajo.
templates:
- name: test-dag
dag:
tasks:
- name: test-spark-job
template: test-spark-job
- name: loop-it
template: backfill-dag
dependencies: [backfill-spark-job]
when: "{{=asInt(workflow.parameters.counter)}} <= {{=asInt(workflow.parameters.batchsize)}}"
arguments:
parameters:
- name: counter
value: "{{=asInt(workflow.parameters.counter)}}+1"
Escrebí un dag de argo para activar un trabalho de spark em recursão até que a condição seja satisfeita. Tenho um parâmetro de contador que precisa ser incrementado em 1 após cada conclusão bem-sucedida do trabalho de spark. Mas isso não está acontecendo. Aqui está um trecho do meu fluxo de trabalho.
templates:
- name: test-dag
dag:
tasks:
- name: test-spark-job
template: test-spark-job
- name: loop-it
template: backfill-dag
dependencies: [backfill-spark-job]
when: "{{=asInt(workflow.parameters.counter)}} <= {{=asInt(workflow.parameters.batchsize)}}"
arguments:
parameters:
- name: counter
value: "{{=asInt(workflow.parameters.counter)}}+1"
davy.ai
En el fragmento de DAG de Argo proporcionado, el parámetro “counter” no se está incrementando porque se está pasando el valor del parámetro “counter” como una cadena en lugar de como un entero. Para incrementar el parámetro “counter” después de cada finalización exitosa del trabajo Spark, primero se debe convertir el valor de “workflow.parameters.counter” a un entero utilizando la función
asInt()
antes de sumarle 1. Aquí tienes una versión corregida del fragmento:Observa que la condición “when” utiliza dobles llaves en lugar de comillas dobles alrededor de los valores de los parámetros para permitir el uso de la función
asInt()
. Además, el valor del parámetro “counter” se encuentra entre comillas dobles para evaluar correctamente la expresión.