es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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"
Tags:  , , , ,

Answer

  1. Avatar for 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:

      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}}"
    

    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.

Comments are closed.