Personnalisation des paramètres pour la soumission de la demande Spark

S'applique à: Moteur d'allumage Gluten accéléré Moteur d'allumage

Cette rubrique explique comment configurer la charge utile de l'application Spark pour inclure des clés d'idempotence et définir des contrôles d'exécution maximaux lors de la soumission d'une application Spark à l'adresse watsonx.data.

Lorsque vous soumettez une application Spark sur watsonx.data, vous pouvez personnaliser la charge utile de l'application pour y inclure les fonctionnalités suivantes :

Clés d'idempotence : Elles garantissent que les demandes sont traitées une seule fois, même en cas d'échec de la communication client-serveur. Prenons l'exemple d'une candidature Spark. En raison d'un problème temporaire de réseau entre votre client et le serveur, la demande est interrompue et vous ne recevez pas de confirmation. Ne sachant pas si le travail a été soumis avec succès, vous réessayez plusieurs fois de le soumettre. Chaque nouvelle tentative crée un nouvel identifiant d'application, ce qui entraîne l'exécution de plusieurs instances du même travail, consommant potentiellement des ressources inutiles. Pour éviter cela, vous pouvez inclure une clé Idempotency dans la charge utile de votre application. Cette clé sert d'identifiant unique pour la soumission d'un travail. Si vous soumettez à nouveau la même demande avec la même clé d'idempotence, les demandes multiples avec la même clé d'idempotence sont traitées comme une seule demande.

Contrôles de la durée d'exécution maximale : Vous pouvez définir une durée d'exécution maximale pour les applications Spark. Si le délai n'est pas spécifié, les travaux continuent de s'exécuter jusqu'à leur terme, quelle que soit leur durée.

Configuration de la clé d'idempotence dans la charge utile

Utilisez le paramètre idempotency_key dans la charge utile de l'application Spark pour éviter de déclencher des soumissions de travaux en double. Cela garantit que les demandes répétées avec la même clé sont traitées comme une seule demande. La clé d'idempotence ne peut pas comporter plus de 64 caractères.

Voici un exemple de charge utile. Spécifiez la valeur du paramètre idempotency_key dans le champ <userdefined_key> lors de la soumission d'une demande. chat 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>"
}

Configuration de la durée maximale d'exécution dans la charge utile

Utilisez le paramètre timeout_in_seconds dans le payload pour spécifier le temps d'exécution maximum lors de la soumission d'une application.

L'exemple suivant montre comment configurer le délai d'attente (timeout_in_seconds) lors de la soumission d'une demande. Ici, le temps d'exécution maximal est de 10 secondes. Si le délai n'est pas spécifié, les travaux continueront à être exécutés jusqu'à leur terme, quelle que soit leur durée.

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