Personalização de parâmetros para envio de aplicativos Spark

Aplica-se a: Motor de faísca Motor de faísca acelerado com glúten

Este tópico explica como configurar a carga útil do aplicativo Spark para incluir chaves de idempotência e definir controles máximos de tempo de execução ao enviar um aplicativo Spark em watsonx.data.

Ao enviar um aplicativo Spark em watsonx.data, você pode personalizar o payload do aplicativo para incluir os seguintes recursos:

Chaves de idempotência: Garante que os envios de aplicativos sejam processados exatamente uma vez, mesmo em casos de falhas de comunicação entre cliente e servidor. Considere um exemplo em que você está enviando um aplicativo Spark. Devido a um problema temporário de rede entre o seu cliente e o servidor, a solicitação expirou e você não recebeu uma confirmação. Sem ter certeza de que o trabalho foi enviado com sucesso, você tenta novamente o envio várias vezes. Cada nova tentativa cria um novo ID de aplicativo, resultando em várias instâncias do mesmo trabalho em execução, o que pode consumir recursos desnecessários. Para evitar isso, você pode incluir uma chave de Idempotência na carga útil do aplicativo. Essa chave funciona como um identificador exclusivo para o envio do trabalho. Se você reenviar o mesmo aplicativo com a mesma chave de idempotência, várias solicitações com a mesma chave de idempotência serão tratadas como um único envio.

Controles de tempo de execução máximo: Você pode definir um tempo máximo de execução para os aplicativos Spark. Se o tempo limite não for especificado, os trabalhos continuarão sendo executados até a conclusão, independentemente do tempo que levarem.

Configuração da chave de idempotência na carga útil

Use o parâmetro idempotency_key na carga útil do aplicativo Spark para evitar o acionamento de envios duplicados de trabalhos. Isso garante que solicitações repetidas com a mesma chave sejam tratadas como uma única solicitação. Idempotency_key não pode ter mais de 64 caracteres.

A seguir, um exemplo de carga útil. Especifique o valor do parâmetro idempotency_key no campo <userdefined_key> ao enviar um aplicativo. gato idempotency_test.json

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
    "arguments": [
      "/opt/ibm/spark/examples/src/main/resources/people.txt"
    ],
    "conf": {
      "spark.app.name": "PySpark Application",
      "spark.eventLog.enabled": "true"
    }
  },
  "idempotency_key": "<userdefined_key>"
}

Configuração do tempo máximo de execução na carga útil

Use o parâmetro timeout_in_seconds no payload para especificar o tempo máximo de execução durante o envio de um aplicativo.

A seguir, um exemplo de carga útil que mostra como configurar o timeout_in_seconds ao enviar um aplicativo. Aqui, o tempo máximo de execução é de 10 segundos. Se o tempo limite não for especificado, os trabalhos continuarão a ser executados até a conclusão, independentemente do tempo que levarem.

{
    "application_details": {
                "application":"cos://uma-cos-1.mycos/longrunning_with_sleep.py",
    "conf": {
      "spark.app.name": "cosApp",
      "spark.hadoop.fs.cos.mycos.endpoint": "s3.us-south.cloud-object-storage.appdomain.cloud",
      "spark.hadoop.fs.cos.mycos.secret.key": "fbf6bcc31eb2bf85ebd02949edf26cf893a9256bcfa91ebe",
      "spark.hadoop.fs.cos.mycos.access.key": "73976d45c75e4d548381e4da0e98f816"
    }
        },
    "timeout_in_seconds":"60"
}'