Personalizzazione dei parametri per l'invio delle applicazioni Spark
Si applica a: Motore a scintilla Glutine accelerato Motore a scintilla
Questo argomento spiega come configurare il payload dell'applicazione Spark per includere le chiavi di idempotenza e impostare i controlli di runtime massimi quando si invia un'applicazione Spark in watsonx.data.
Quando si invia un'applicazione Spark in watsonx.data, è possibile personalizzare il payload dell'applicazione per includere le seguenti caratteristiche:
Chiavi di idempotenza: Garantisce che gli invii delle applicazioni vengano elaborati esattamente una volta, anche in caso di errori di comunicazione tra client e server. Si consideri un esempio in cui si sta presentando una domanda Spark. A causa di un problema temporaneo di rete tra il client e il server, la richiesta si interrompe e non si riceve alcuna conferma. Non sapendo se il lavoro è stato inviato con successo, si tenta più volte l'invio. Ogni nuovo tentativo crea un nuovo ID applicazione, con il risultato che più istanze dello stesso lavoro vengono eseguite consumando potenzialmente risorse inutili. Per evitarlo, è possibile includere una chiave di idempotenza nel payload dell'applicazione. Questa chiave funge da identificatore unico per l'invio del lavoro. Se si ripresenta la stessa domanda con la stessa chiave di idempotenza, più richieste con la stessa chiave di idempotenza vengono trattate come un unico invio.
Controlli sul tempo massimo di esecuzione: È possibile definire un tempo massimo di esecuzione per le applicazioni Spark. Se il timeout non è specificato, i lavori continuano a essere eseguiti fino al completamento, indipendentemente dalla loro durata.
Configurazione della chiave di idempotenza nel payload
Utilizzate il parametro idempotency_key nel payload dell'applicazione Spark per evitare di attivare l'invio di lavori duplicati. Questo assicura che le richieste ripetute con la stessa chiave siano trattate come una singola richiesta. Idempotency_key non può avere una lunghezza superiore a 64 caratteri.
Di seguito è riportato un esempio di carico utile. Specificare il valore del parametro idempotency_key nel campo <userdefined_key> durante l'invio di una domanda. gatto 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>"
}
Configurazione del tempo massimo di esecuzione nel payload
Utilizzare il parametro timeout_in_secondi nel payload per specificare il tempo massimo di esecuzione durante l'invio di un'applicazione.
Di seguito è riportato un payload di esempio che mostra come configurare il timeout_in_secondi durante l'invio di una domanda. Il tempo massimo di esecuzione è di 10 secondi. Se il timeout non è specificato, i lavori continueranno a essere eseguiti fino al completamento, indipendentemente dalla loro durata.
{
"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"
}'