Spark 作业 API 语法、参数和返回码
您通常使用 cURL 命令提交 Spark 作业。
Spark 作业 cURL 命令语法为:
curl -k -X POST <V4_JOBS_API_ENDPOINT> -H "Authorization: ZenApiKey <TOKEN> -d @input.json
按如下所示替换变量:
<V4_JOBS_API_ENDPOINT>: 要用于提交 Spark 作业的实例的端点。 请注意,Analytics Engine Powered by Apache Spark 服务器上可以存在多个 IBM Cloud Pak for Data 实例,每个实例都有自己的端点用于提交作业。 要获取已配置实例的 Spark 作业端点,请参阅管理 Analytics Engine powered by Apache Spark 实例。<TOKEN>: 要获取服务实例的访问令牌,请参阅 生成 API 授权令牌。
注:
POST 方法在应用程序初始验证后返回。 将异步处理作业请求; 首先创建 SparkContext ,然后执行应用程序。 可以使用 GET 方法来访存应用程序的当前状态。 请参阅 Spark 作业状态 (Spark job status)。
Python 作业的输入有效内容示例:
{
"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": "MyJob",
"spark.eventLog.enabled": "true",
"spark.driver.memory": "4G",
"spark.driver.cores": 1,
"spark.executor.memory": "4G",
"spark.executor.cores": 1,
"ae.spark.executor.count": 1
},
"env": {
"SAMPLE_ENV_KEY": "SAMPLE_VALUE"
}
}
}
R 作业的输入有效内容示例:
{
"application_details": {
"application": "/opt/ibm/spark/examples/src/main/r/dataframe.R",
"conf": {
"spark.app.name": "MyJob",
"spark.eventLog.enabled": "true",
"spark.driver.memory": "4G",
"spark.driver.cores": 1,
"spark.executor.memory": "4G",
"spark.executor.cores": 1,
"ae.spark.executor.count": 1
},
"env": {
"SAMPLE_ENV_KEY": "SAMPLE_VALUE"
}
}
}
Scala 作业的输入有效内容示例:
{
"application_details": {
"application": "/opt/ibm/spark/examples/jars/spark-examples*.jar",
"arguments": [
"1"
],
"class": "org.apache.spark.examples.SparkPi",
"conf": {
"spark.app.name": "MyJob",
"spark.eventLog.enabled": "true",
"spark.driver.memory": "4G",
"spark.driver.cores": 1,
"spark.executor.memory": "4G",
"spark.executor.cores": 1,
"ae.spark.executor.count": 1
},
"env": {
"SAMPLE_ENV_KEY": "SAMPLE_VALUE"
}
}
}
如果提交作业成功,那么返回的响应为:
{
"application_id": "<application_id>",
"state": "ACCEPTED"
}
提示:
- 保存返回的 "application_id" 值以获取作业的状态或停止作业。
- 保存返回值 "spark_application_id" 以监视和分析 Spark 历史记录服务器上的 Spark 应用程序。
使用定制 Spark 运行时的 Spark 作业 API
用于更改 Spark 运行时版本的输入有效内容的示例:
{
"application_details": {
"application": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
"arguments": [
"/opt/ibm/spark/examples/src/main/resources/people.txt"
],
"runtime": {
"spark_version": "3.4"
}
}
}
使用自定义包的 Spark Job API
使用自定义包的输入有效负载的示例:
{
"volumes": [
{
"name": "cpd-instance::myapp-vol",
"mount_path": "/my-app"
}
],
"application_details": {
"application": "/my-app/python-spark-pi.py",
"packages":
"org.apache.spark:spark-sql-kafka-0-10_2.12:3.4.0,org.apache.spark:spark-streaming-kafka-0-10_2.12:3.4.0",
"conf": {
"spark.app.name": "MyJob",
"spark.eventLog.enabled": "true",
"spark.driver.cores": 4,
"spark.driver.memory": "8G",
"spark.executor.memory": "2G",
"spark.executor.cores": 4,
"ae.spark.driver.log.level": "ERROR",
"ae.spark.executor.log.level": "WARN"
}
}
}
Spark 作业 API 参数
可以在 Spark 作业 API 中使用的参数如下所示:
| 名称 | 子属性 | 必选/可选 | 类型 | 描述 |
|---|---|---|---|---|
| 应用程序详细信息 | 必需 | 对象 | 指定 Spark 应用程序详细信息 | |
| application | 必需 | 字符串 | 指定 Spark 应用程序文件,即 Python, R 或 scala 作业文件的文件路径 | |
| 参量 | 可选 | 字符串 [] | 指定应用程序参数 | |
| conf | 可选 | 键值 JSON 对象 | 指定覆盖预定义值的 Spark 配置值。 请参阅 缺省 Spark 配置参数和环境变量 部分,以获取 Spark 服务定义的缺省配置参数。 请参阅 Apache Spark 配置 ,以了解 Apache Spark支持的配置参数。 | |
| env | 可选 | 键值 JSON 对象 | 指定作业所需的 Spark 环境变量。 请参阅 缺省 Spark 配置参数和环境变量 部分,以了解 Spark 服务定义的缺省环境变量。 请参阅 Apache Spark 环境变量 ,以了解 Apache Spark支持的环境变量。 | |
| class | 可选 | 字符串 | 指定您的 Scala 应用程序的入口点。 | |
| 驱动程序-Java-选项 | 可选 | 字符串 | 指定要传递到驱动程序的额外 Java 选项 | |
| 驱动程序库路径 | 可选 | 字符串 | 指定要传递到驱动程序的额外库路径条目 | |
| 驱动程序类路径 | 可选 | 字符串 | 指定要传递给驱动程序的额外类路径条目。 请注意,随 --jars 添加的 JAR 会自动包含在类路径中。 |
|
| JAR | 可选 | 字符串 | 指定要包含在驱动程序和执行程序类路径上的 JAR 的逗号分隔列表 | |
| 程序包 | 可选 | 字符串 | 指定要包含在驱动程序和执行程序类路径上的 JAR 的 Maven 坐标的逗号分隔列表。 搜索本地 Maven 存储库,然后搜索 Maven 中央存储库,最后搜索 --repositories提供的任何其他远程存储库。 坐标的格式应为 groupId:artifactId:version。 |
|
| 排除-包 | 可选 | 字符串 | 指定在解析 --packages 中提供的依赖关系时要排除的 groupId:artifactId 的逗号分隔列表,以避免依赖关系冲突 |
|
| 存储库 | 可选 | 字符串 | 指定要搜索 --packages 提供的 Maven 坐标的其他远程存储库的逗号分隔列表 |
|
| Py 文件 | 可选 | 字符串 | 指定要放置在 Python 应用程序的 PYTHONPATH 上的 .zip, .egg或 .py 文件的逗号分隔列表 |
|
| runtime.spark_version | 可选 | 字符串 | 指定要用于作业的 Spark 运行时版本。 IBM Cloud Pak for Data 支持 Spark 3.3 和 Spark 3.4。 | |
| volumes | 可选 | 对象列表 | 指定要安装的除 Spark 实例卷以外的卷。 如果在应用程序有效内容中添加了卷,那么有效内容中的 conf 部分是必需的。 | |
| Name | 必需 | 字符串 | 指定卷的名称 | |
| 源子路径 | 可选 | 字符串 | 指定要安装的卷中的源路径。 源路径必须是相对路径。 | |
| 安装路径 | 必需 | 字符串 | 指定要安装卷的位置。 请注意,存在一些禁止使用的安装路径,当您尝试输入这些路径时,将限制您使用这些路径,因为这些路径可能会损害运行时。 |
响应码
Spark 作业 API 返回以下响应代码:
| 返回码 | 返回码的含义 | 描述 |
|---|---|---|
| 202 | 已接受作业 | 已成功验证 Spark 作业并接受该作业以提交应用程序。 |
| 400 | 错误请求 | 当有效内容不正确时,例如,如果有效内容格式不正确或缺少参数,就会返回此代码。 |
| 404 | 找不到 | 当针对不存在的实例标识提交 Spark 应用程序时,将返回此值。 |
| 500 | 内部服务器错误 | 如果服务器未响应您要求其执行的操作,那么将返回此消息。 请再次尝试提交该作业。 |
| 503 | 服务不可用 | 资源不足时,就会返回此代码。 可能的响应: Could not complete the request. Reason - FailedScheduling. |
缺省 Spark 配置参数和环境变量
下表列出了 Analytics Engine powered by Apache Spark 中常用的 Spark 配置参数和环境变量及其默认值。
下表列出了 Spark 配置参数及其缺省值:
| Spark 配置 | 缺省值 |
|---|---|
spark.eventLog.enabled |
TRUE |
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.executer.memory |
1 G |
spark.executer.cores |
1 |
(custom) ae.spark.executor.count |
1 |
(custom) ae.spark.application.priority |
1 |
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.driver.memory |
1024 万 |
spark.driver.cores |
1 |
spark.local.dir |
/tmp/spark/scratch 请参阅 spark.local.dir 配置参数 以获取详细信息。 |
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 |
| 火花主端口 | 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 | python310 |
| 飞龙之路 | /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 作业