Anpassen der Parameter für die Einreichung von Spark-Anwendungen
Gilt für: Funkenmotor Gluten beschleunigter Funkenmotor
In diesem Thema wird erläutert, wie Sie die Nutzlast der Spark-Anwendung so konfigurieren, dass sie Idempotenzschlüssel enthält, und wie Sie maximale Laufzeitkontrollen festlegen, wenn Sie eine Spark-Anwendung in watsonx.data einreichen.
Wenn Sie eine Spark-Anwendung in watsonx.data einreichen, können Sie die Nutzlast der Anwendung so anpassen, dass sie die folgenden Funktionen enthält:
Idempotenz-Schlüssel: Er stellt sicher, dass Anwendungsübermittlungen genau einmal verarbeitet werden, selbst wenn die Kommunikation zwischen Client und Server ausfällt. Nehmen wir ein Beispiel, bei dem Sie eine Spark-Anwendung einreichen. Aufgrund eines vorübergehenden Netzwerkproblems zwischen Ihrem Client und dem Server kommt es zu einer Verzögerung der Anfrage und Sie erhalten keine Bestätigung. Wenn Sie nicht sicher sind, ob der Auftrag erfolgreich übermittelt wurde, versuchen Sie die Übermittlung mehrmals zu wiederholen. Bei jedem erneuten Versuch wird eine neue Anwendungs-ID erstellt, was dazu führt, dass mehrere Instanzen desselben Auftrags ausgeführt werden, was unnötige Ressourcen verbraucht. Um dies zu vermeiden, können Sie einen Idempotency-Schlüssel in Ihre Anwendungs-Payloads aufnehmen. Dieser Schlüssel dient als eindeutiger Identifikator für die Auftragsübermittlung. Wenn Sie denselben Antrag mit demselben Idempotenzschlüssel erneut einreichen, werden mehrere Anträge mit demselben Idempotenzschlüssel als ein einziger Antrag behandelt.
Kontrolle der maximalen Laufzeit: Sie können eine maximale Ausführungszeit für Spark-Anwendungen festlegen. Wird keine Zeitüberschreitung angegeben, werden die Aufträge bis zur Fertigstellung weiter ausgeführt, unabhängig davon, wie lange sie dauern.
Idempotenzschlüssel in der Nutzlast konfigurieren
Verwenden Sie den Parameter idempotency_key in der Nutzlast der Spark-Anwendung, um zu vermeiden, dass doppelte Auftragseinreichungen ausgelöst werden. Dadurch wird sichergestellt, dass wiederholte Anfragen mit demselben Schlüssel als eine einzige Anfrage behandelt werden. Idempotency_key darf nicht mehr als 64 Zeichen lang sein.
Im Folgenden finden Sie ein Beispiel für eine Nutzlast. Geben Sie beim Einreichen eines Antrags den Wert des Parameters idempotency_key im Feld <userdefined_key> an. katze 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>"
}
Konfiguration der maximalen Laufzeit in der Nutzlast
Verwenden Sie den Parameter timeout_in_seconds in der Payload, um die maximale Ausführungszeit beim Einreichen einer Anwendung anzugeben.
Die folgende Beispiel-Nutzlast zeigt, wie der Wert timeout_in_seconds beim Einreichen eines Antrags konfiguriert werden kann. Hier beträgt die maximale Ausführungszeit 10 Sekunden. Wird die Zeitüberschreitung nicht angegeben, werden die Aufträge bis zum Abschluss ausgeführt, unabhängig davon, wie lange sie dauern.
{
"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"
}'