在 Java 应用程序中使用 Spark REST HTTP 服务器时读取 Spark-defaults.conf

问题描述 投票:0回答:1

我正在使用 Spark Rest 服务器来提交作业。提交 pyspark 应用程序时,文档将

mainClass
设置为
org.apache.spark.deploy.SparkSubmit
,然后将 python 脚本作为
appArgs
传递。这意味着应用程序正在使用
SparkSubmit
运行,默认情况下读取
spark-defaults.conf
。例如:

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

我正在尝试使用 Java Spark 作业而不是 Python 来实现相同的行为。大多数示例将 Job 类本身作为

mainClass
,这意味着它不是与 SparkSubmit 一起运行,并且作业没有
spark-defaults.conf
中的配置。

我找不到将

SparkSubmit
与 jar 文件一起使用的方法,因为没有选项可以提供 SparkSubmit 的
--class
参数。

使用 API 提交时如何指定

--class
,或者让类以不同的方式加载 Spark-defaults.conf?

java apache-spark pyspark apache-spark-sql
1个回答
0
投票

由于无法提供自定义 Spark 提交参数,因此可以通过不使用 appResource 而是在 appArgs 参数中添加所有内容来实现,如下所示:

curl -X POST http://localhost:6066/v1/submissions/create --header "Content-Type:application/json;charset=UTF-8" --data '{
"action" : "CreateSubmissionRequest",
"appArgs" : [ "--class", "com.class.YourClass", "path/to/jar.jar", "other arg1", "other arg2"],
"appResource" : "",
"environmentVariables" : {
    "SPARK_ENV_LOADED" : "1"
},
"mainClass" : "org.apache.spark.deploy.SparkSubmit",
"sparkProperties" : {
"spark.driver.supervise" : "false",
"spark.app.name" : "Simple App",
"spark.eventLog.enabled": "true",
"spark.submit.deployMode" : "cluster",
"spark.master" : "spark://localhost:6066"
}
}'```
© www.soinside.com 2019 - 2024. All rights reserved.