自訂 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"
}'