You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Spark REST HTTP服务器提交Java作业时如何读取spark-defaults.conf

通过Spark REST API提交Java Spark作业并加载spark-defaults.conf

要让Java作业通过SparkSubmit运行(从而自动读取spark-defaults.conf),你可以沿用PySpark的思路,将mainClass设为org.apache.spark.deploy.SparkSubmit,然后把--class参数和你的作业主类作为appArgs传入。具体配置如下:

示例CURL请求

curl -X POST http://localhost:6066/v1/submissions/create \
--header "Content-Type:application/json;charset=UTF-8" \
--data '{
"action" : "CreateSubmissionRequest",
"appArgs" : [ "--class", "com.yourcompany.YourSparkMainClass" ],
"appResource" : "s3n://<bucket-Name>/your-spark-job.jar",
"environmentVariables" : {
    "SPARK_ENV_LOADED" : "1"
},
"mainClass" : "org.apache.spark.deploy.SparkSubmit",
"sparkProperties" : {
"spark.driver.supervise" : "false",
"spark.app.name" : "Java Spark App",
"spark.eventLog.enabled": "true",
"spark.submit.deployMode" : "cluster",
"spark.master" : "spark://localhost:6066"
}
}'

关键参数说明

  • mainClass:固定为org.apache.spark.deploy.SparkSubmit,让REST服务器通过SparkSubmit启动你的作业,由它负责加载spark-defaults.conf
  • appArgs:传入--class和你的作业主类全限定名,这对应命令行中spark-submit --class的参数作用
  • appResource:指定你的Java Spark作业Jar包的路径,支持HDFS、S3等分布式存储路径

替代方案:直接在作业代码中加载配置

如果不想通过SparkSubmit代理,也可以在Java作业代码中显式加载spark-defaults.conf:

import org.apache.spark.SparkConf;

public class YourSparkMainClass {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf()
                .setAppName("Java Spark App")
                .loadFromSystemProperties(); // 加载spark-defaults.conf中的配置
        
        // 初始化SparkSession
        // SparkSession spark = SparkSession.builder().config(conf).getOrCreate();
    }
}

这种方式需要确保作业运行环境能正确访问到spark-defaults.conf文件,不如通过SparkSubmit的方式省心。

内容的提问来源于stack exchange,提问作者yogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:26:05