为提交 Spark 应用程序定制参数
适用于:火花机 面筋加速火花机
本主题介绍在 watsonx.data 中提交 Spark 应用程序时,如何配置 Spark 应用程序有效载荷以包含幂等键,并设置最大运行时控制。
在 watsonx.data 中提交 Spark 应用程序时,可以自定义应用程序有效载荷,使其包含以下功能:
等效键:它能确保即使在客户端与服务器通信失败的情况下,也能准确地处理一次提交的应用程序。 举个例子,您正在提交 Spark 应用程序。 由于客户端和服务器之间的临时网络问题,请求超时,您没有收到确认。 由于不确定作业是否成功提交,您多次重试提交。 每次重试都会创建一个新的应用程序 ID,从而导致同一作业的多个实例运行,可能会消耗不必要的资源。 为了避免这种情况,您可以在应用程序有效载荷中包含一个 "Idempotency key"。 该键是作业提交的唯一标识符。 如果使用相同的idempotency 密钥重新提交同一申请,则使用相同的idempotency 密钥提交的多个申请将被视为一次提交。
最大运行时间控制:您可以为 Spark 应用程序定义最长执行时间。 如果未指定超时时间,作业将继续运行直至完成,无论耗时长短。
在有效载荷中配置失效密钥
在 Spark 应用程序有效载荷中使用 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"
}'