自訂 Spark 申請提交的參數

適用於火花發動機 穀麩加速火花發動機

本主題說明在 watsonx.data 中提交 Spark 應用程式時,如何設定 Spark 應用程式的有效負載包含 idempotency 金鑰,以及設定最大執行時控制。

在 watsonx.data 中提交 Spark 應用程式時,您可以自訂應用程式有效載荷,以包含下列功能:

等效鍵:它可確保即使在客戶端與伺服器通訊失敗的情況下,應用程式提交也會被準確處理一次。 考慮一個您正在提交 Spark 應用程式的範例。 由於您的用戶端和伺服器之間的臨時網路問題,請求超時,您沒有收到確認。 由於不確定工作是否已成功提交,您多次重試提交。 每次重試都會建立新的應用程式 ID,導致同一作業有多個實體在執行,可能會消耗不必要的資源。 為了避免這種情況,您可以在應用程式有效負載中包含一個 Idempotency 金鑰。 此 key 可作為工作提交的唯一識別碼。 如果您使用相同的 idempotency 密鑰重新提交相同的申請,則使用相同 idempotency 密鑰的多個請求將被視為單次提交。

最大執行時間控制:您可以定義 Spark 應用程式的最長執行時間。 如果未指定超時,則無論工作耗時多久,都會繼續執行直到完成。

在有效負載中設定 Idempotency 金鑰

在 Spark 應用程式 payload 中使用 idempotency_key 參數,以避免觸發重複的工作提交。 這可確保相同鑰匙的重複請求被視為單一請求。 Idempotency_key 的長度不能超過 64 個字元。

以下是有效負載的範例。 提交申請時,在 <userdefined_key> 欄位中指定 idempotency_key 參數值。 貓 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>"
}

設定有效負載的最長執行時間

在有效負載中使用 timeout_in_seconds 參數指定提交應用程式時的最長執行時間。

以下是一個範例有效負載,顯示如何在提交應用程式時設定 timeout_in_seconds。 在此,最長執行時間為 10 秒。 如果未指定超時,則無論工作耗時多久,都會繼續執行直到完成。

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