Personalización de parámetros para el envío de solicitudes Spark
Se aplica a: Motor de chispa Motor Spark acelerado por gluten
En este tema se explica cómo configurar la carga útil de la aplicación Spark para incluir claves de idempotencia y establecer controles máximos de tiempo de ejecución al enviar una aplicación Spark en watsonx.data.
Al enviar una aplicación Spark en watsonx.data, puede personalizar la carga útil de la aplicación para incluir las siguientes características:
Claves de idempotencia: Garantiza que los envíos de solicitudes se procesen exactamente una vez, incluso en casos de fallos en la comunicación cliente-servidor. Considere un ejemplo en el que está presentando una solicitud Spark. Debido a un problema temporal de red entre el cliente y el servidor, la solicitud se agota y no se recibe confirmación. Si no está seguro de si el trabajo se ha enviado correctamente, reintenta el envío varias veces. Cada reintento crea un nuevo ID de aplicación, con lo que se ejecutan varias instancias del mismo trabajo que pueden consumir recursos innecesarios. Para evitarlo, puede incluir una clave de Idempotencia en la carga útil de su aplicación. Esta clave sirve de identificador único para el envío del trabajo. Si vuelve a enviar la misma solicitud con la misma clave de idempotencia, las solicitudes múltiples con la misma clave de idempotencia se tratarán como un único envío.
Controles de tiempo máximo de ejecución: Puedes definir un tiempo máximo de ejecución para las aplicaciones Spark. Si no se especifica el tiempo de espera, los trabajos siguen ejecutándose hasta su finalización, independientemente del tiempo que tarden.
Configuración de la clave de idempotencia en la carga útil
Utilice el parámetro idempotency_key en la carga útil de la aplicación Spark para evitar el envío de trabajos duplicados. Esto garantiza que las solicitudes repetidas con la misma clave se traten como una única solicitud. Idempotency_key no puede tener más de 64 caracteres.
A continuación se muestra un ejemplo de carga útil. Especifique el valor del parámetro idempotency_key en el campo <userdefined_key> al enviar una solicitud. cat 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>"
}
Configuración del tiempo máximo de ejecución en la carga útil
Utilice el parámetro timeout_in_seconds en la carga útil para especificar el tiempo máximo de ejecución durante el envío de una solicitud.
A continuación se muestra un ejemplo de carga útil que muestra cómo configurar el timeout_in_seconds al enviar una solicitud. Aquí, el tiempo máximo de ejecución es de 10 segundos. Si no se especifica el tiempo de espera, los trabajos seguirán ejecutándose hasta su finalización, independientemente del tiempo que tarden.
{
"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"
}'