Spark 作业 API 语法、参数和返回码
您通常使用 cURL 命令提交 Spark 作业。
Spark 作业 cURL 命令语法为:
curl -k -X POST <V3_JOBS_API_ENDPOINT> -H "Authorization: Bearer <ACCESS_TOKEN>" -d @input.json
Spark 作业 cURL 选项:
-k选项表示跳过证书验证,因为服务实例 Web 站点使用自签名 SSL 证书。<V3_JOBS_API_ENDPOINT>是要用于提交 Spark 作业的实例的端点。 请注意, IBM Cloud Pak for Data 服务器上可以存在多个 Analytics Engine Powered by Apache Spark 实例,并且每个实例都有自己的端点用于提交作业。 要获取所供应实例的 Spark 作业端点,请参阅 管理服务实例。-H选项是标头参数。 标头参数是键值对。 必须在授权标头中发送不记名令牌 (<ACCESS_TOKEN>)。 要获取服务实例的访问令牌,请参阅管理服务实例。-d选项定义要在 POST 请求中发送到服务器的有效内容数据。 请参阅下面的输入有效内容示例。注: 如果应用程序创建 SparkContext ,那么 POST 方法将在创建 SparkSession 时返回。 如果应用程序未创建 SparkContext ,那么将阻止 POST 方法,直到应用程序终止为止。
Python 作业的输入有效内容示例:
{ "template_id": "<template_id>", "application_details": { "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py", "application_arguments": ["/opt/ibm/spark/examples/src/main/resources/people.txt"], "conf": { "spark.app.name": "MyJob", "spark.eventLog.enabled": "true" }, "env": { "SAMPLE_ENV_KEY": "SAMPLE_VALUE" }, "driver-memory": "4G", "driver-cores": 1, "executor-memory": "4G", "executor-cores": 1, "num-executors": 1 } }Scala 作业的输入有效内容示例:
{ "template_id": "<template_id>", "application_details": { "application": "/opt/ibm/spark/examples/jars/spark-examples*.jar", "application_arguments": ["1"], "class": "org.apache.spark.examples.SparkPi", "conf": { "spark.app.name": "MyJob", "spark.eventLog.enabled": "true" }, "env": { "SAMPLE_ENV_KEY": "SAMPLE_VALUE" }, "driver-memory": "4G", "driver-cores": 1, "executor-memory": "4G", "executor-cores": 1, "num-executors": 1 } }POST 方法在应用程序创建 SparkSession 时返回。 应用程序将继续运行,并且可以检索状态。
如果提交作业成功,那么返回的响应为:
{ "application_id": "<application_id>", "state": "RUNNING", "start_time": "Monday' 07 June 2021 '14:46:23.237+0000", "spark_application_id": "app-20210607144623-0000" }
提示:
- 保存返回的 "application_id" 值以获取作业的状态或停止作业。
- 保存返回值 "spark_application_id" 以监视和分析 Spark 历史记录服务器上的 Spark 应用程序。
Spark 作业 API 参数
可以在 Spark 作业 API 中使用的参数如下所示:
| 名称 | 子属性 | 必选/可选 | 类型 | 描述 |
|---|---|---|---|---|
| 应用程序详细信息 | 必需 | 对象 | 指定 Spark 应用程序详细信息 | |
| application | 必需 | String | 指定 Spark 应用程序文件,即 Python, R 或 scala 作业文件的文件路径 | |
| application_arguments | 可选 | 字符串 [] | 指定应用程序参数 | |
| conf | 可选 | 键值 JSON 对象 | 指定覆盖预定义值的 Spark 配置值。 请参阅 缺省 Spark 配置参数和环境变量 部分,以获取 Spark 服务定义的缺省配置参数。 请参阅 Apache Spark 配置 ,以了解 Apache Spark支持的配置参数。 | |
| env | 可选 | 键值 JSON 对象 | 指定作业所需的 Spark 环境变量。 请参阅 缺省 Spark 配置参数和环境变量 部分,以了解 Spark 服务定义的缺省环境变量。 请参阅 Apache Spark 环境变量 ,以了解 Apache Spark支持的环境变量。 | |
| class | 可选 | String | 指定 Scala 应用程序的入口点。 | |
| executor-memory | 可选 | String | 指定每个执行程序的内存,例如 1000M 或 2G。 缺省值为 1G。 | |
| executor-cores | 可选 | 整数 | 以独立方式指定工作程序上每个执行程序或所有可用核心的核心数。 缺省值为 1。 最大值为 5 个 CPU。 | |
| num-executors | 可选 | 整数 | 指定要启动的执行程序数。 缺省值为 1。 | |
| 驱动程序核心 | 可选 | 整数 | 指定驱动程序仅在集群方式下使用的核心数。 缺省值为 1。 最大值为 5 个 CPU。 | |
| 驱动程序-内存 | 可选 | String | 指定驱动程序的内存,例如 1000M 或 2G。 缺省值为 1024M。 | |
| driver-java-options | 可选 | String | 指定要传递到驱动程序的额外 Java 选项 | |
| 驱动程序库路径 | 可选 | String | 指定要传递到驱动程序的额外库路径条目 | |
| 驱动程序类路径 | 可选 | String | 指定要传递给驱动程序的额外类路径条目。 请注意,随 --jars 添加的 JAR 会自动包含在类路径中。 |
|
| JAR | 可选 | String | 指定要包含在驱动程序和执行程序类路径上的 JAR 的逗号分隔列表 | |
| 包 | 可选 | String | 指定要包含在驱动程序和执行程序类路径上的 JAR 的 Maven 坐标的逗号分隔列表。 搜索本地 Maven 存储库,然后搜索 Maven 中央存储库,最后搜索 --repositories提供的任何其他远程存储库。 坐标的格式应为 groupId:artifactId:version。 |
|
| 排除-包 | 可选 | String | 指定在解析 --packages 中提供的依赖关系时要排除的 groupId:artifactId 的逗号分隔列表,以避免依赖关系冲突 |
|
| 存储库 | 可选 | String | 指定要搜索 --packages 提供的 Maven 坐标的其他远程存储库的逗号分隔列表 |
|
| py 文件 | 可选 | String | 指定要放置在 Python 应用程序的 PYTHONPATH 上的 .zip, .egg或 .py 文件的逗号分隔列表 |
|
| template_id | 可选 | String | 指定 Spark 版本和预安装的系统库。 对于 Spark 3.0 ,缺省值为 spark-3.0.0-jaas-v2-cp4d-template 。 仅当您位于 Cloud Pak for Data V4.0.7 之前的版本上时,才能使用 Spark 2.4 模板 spark-2.4.0-jaas-v2-cp4d-template 。 |
|
| volumes | 可选 | 对象列表 | 指定要安装的除 Spark 实例卷以外的卷。 如果在应用程序有效内容中添加了卷,那么有效内容中的 conf 部分是必需的。 | |
| 名称 | 必需 | String | 指定卷的名称 | |
| 源子路径 | 可选 | String | 指定要安装的卷中的源路径。 源路径必须是相对路径。 | |
| 安装路径 | 必需 | String | 指定要安装卷的位置。 请注意,存在一些禁止使用的安装路径,当您尝试输入这些路径时,将限制您使用这些路径,因为这些路径可能会损害运行时。 |
响应码
Spark 作业 API 返回以下响应代码:
| 返回码 | 返回码的含义 | 描述 |
|---|---|---|
| 201 | 已创建作业 | 提交 Spark 作业成功。 作业响应: {"application_id":"<job_id>", "state":"<job_state>", "start_time": "<start_time>", "spark_application_id": "<spark_app_id>"} |
| 400 | 请求错误 | 当有效内容不正确时,例如,如果有效内容格式不正确或缺少参数,就会返回此代码。 |
| 404 | 找不到 | 当针对不存在的实例标识提交 Spark 应用程序时,将返回此值。 |
| 500 | 内部服务器错误 | 如果服务器未响应您要求其执行的操作,那么将返回此消息。 请再次尝试提交该作业。 |
| 503 | 服务不可用 | 资源不足时,就会返回此代码。 可能的响应: Could not complete the request. Reason - FailedScheduling. Detailed error - 0/6 nodes are available: 3 Insufficient cpu, 3 node(s) had taints that the pod didn't tolerate. |
缺省 Spark 配置参数和环境变量
下表显示了 Analytics Engine Powered by Apache Spark 中常用的 Spark 配置参数和环境变量及其缺省值。
下表列出了 Spark 配置参数及其缺省值:
| Spark 配置 | 缺省值 |
|---|---|
spark.eventLog.enabled |
true |
spark.driver.extraClassPath |
/home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/home/spark/shared/user-libs/spark2/*:/home/spark/user_home/dbdrivers/*:/home/spark/shared/user-libs/common/*:/home/spark/shared/user-libs/connectors/*:/opt/ibm/connectors/parquet-encryption/*:/opt/ibm/third-party/libs/spark2/*:/opt/ibm/third-party/libs/common/*:/opt/ibm/third-party/libs/connectors/*:/opt/ibm/spark/external-jars/* |
spark.executor.extraClassPath |
/home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/home/spark/shared/user-libs/spark2/*:/home/spark/user_home/dbdrivers/*:/home/spark/shared/user-libs/common/*:/home/spark/shared/user-libs/connectors/*:/opt/ibm/connectors/parquet-encryption/*:/opt/ibm/third-party/libs/spark2/*:/opt/ibm/third-party/libs/common/*:/opt/ibm/third-party/libs/connectors/*:/opt/ibm/spark/external-jars/* |
spark.master.ui.port |
8080 |
spark.worker.ui.port |
8081 |
spark.ui.port |
4040 |
spark.history.ui.port |
18080 |
spark.ui.enabled |
true |
spark.ui.killEnabled |
FALSE |
spark.eventLog.dir |
file:///home/spark/spark-events |
spark.ui.reverseProxy |
true |
spark.ui.showConsoleProgress |
true |
spark.shuffle.service.port |
7337 |
spark.r.command |
/opt/ibm/conda/R/bin/Rscript |
spark.hadoop.fs.s3a.fast.upload |
true |
spark.hadoop.fs.s3a.multipart.size |
33554432 |
spark.hadoop.fs.stocator.scheme.list |
cos(罗马生菜) |
spark.hadoop.fs.stocator.cos.scheme |
cos(罗马生菜) |
spark.hadoop.fs.stocator.glob.bracket.support |
true |
spark.hadoop.fs.stocator.cos.impl |
com.ibm.stocator.fs.cos.COSAPIClient |
spark.hadoop.fs.cos.impl |
com.ibm.stocator.fs.ObjectStoreFileSystem |
spark.hadoop.fs.s3a.impl |
org.apache.hadoop.fs.s3a.S3AFileSystem |
spark.authenticate |
FALSE |
spark.network.crypto.enabled |
FALSE |
spark.network.crypto.keyLength |
256 |
下表列出了环境变量及其缺省值:
| 环境变量 | 缺省值 |
|---|---|
| SPARK_DIST_CLASSPATH | /home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/opt/ibm/connectors/idax/*:/opt/ibm/connectors/cloudant/*:/opt/ibm/connectors/db2/*:/opt/ibm/connectors/others-db-drivers/*:/opt/ibm/connectors/wdp-connector-driver/*:/opt/ibm/connectors/wdp-connector-jdbc-library/*:/opt/ibm/connectors/stocator/*:/opt/ibm/connectors/s3/*:/opt/ibm/image-libs/common/*:/opt/ibm/image-libs/spark2/*:/opt/ibm/third-party/libs/batch/*:/opt/ibm/spark/external-jars/* |
| SPARK_LOCAL_DIRS | /tmp/spark/scratch |
| SPARK_MASTER_WEBUI_PORT | 8080 |
| SPARK_MASTER_PORT | 7077 |
| SPARK_WORKER_WEBUI_PORT | 8081 |
| CLASSPATH | /home/spark/user_home/dbdrivers/*:/opt/ibm/connectors/idax/*:/opt/ibm/connectors/cloudant/*:/opt/ibm/connectors/db2/*:/opt/ibm/connectors/others-db-drivers/*:/opt/ibm/connectors/wdp-connector-driver/*:/opt/ibm/connectors/wdp-connector-jdbc-library/*:/opt/ibm/connectors/stocator/*:/opt/ibm/connectors/s3/*:/opt/ibm/image-libs/common/*:/opt/ibm/image-libs/spark2/*:/opt/ibm/third-party/libs/batch/* |
| LD_LIBRARY_PATH | /opt/ibm/connectors/dsdriver/dsdriver/lib:/opt/ibm/connectors/others-db-drivers/oracle/lib:/opt/ibm/jdk/jre/lib/architecture/server:/opt/ibm/jdk/jre/lib/architecture/:/usr/local/lib:/lib64 |
| 运行时间-PYTHON_ENV | python37 |
| PYTHONPATH | /home/spark/space/assets/data_asset:/home/spark/user_home/python-3:/cc-home/_global_/python-3:/home/spark/shared/user-libs/python:/home/spark/shared/conda/envs/python/lib/python/site-packages:/opt/ibm/conda/miniconda/lib/python/site-packages:/opt/ibm/third-party/libs/python3:/opt/ibm/image-libs/python3:/opt/ibm/image-libs/spark2/xskipper-core.jar:/opt/ibm/image-libs/spark2/spark-extensions.jar:/opt/ibm/image-libs/spark2/metaindexmanager.jar:/opt/ibm/image-libs/spark2/stmetaindexplugin.jar:/opt/ibm/spark/python:/opt/ibm/spark/python/lib/py4j-0.10.7-src.zip |
| R_LIBS_USER | /home/spark/space/assets/data_asset:/home/spark/shared/user-libs/R:/opt/ibm/third-party/libs/R:/opt/ibm/conda/R/lib64/R/library/:/opt/ibm/spark/R/lib:/opt/ibm/image-libs/R |
父主题: 提交 Spark 作业