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

Windows Spark集群REST API提交任务遇ERROR空指针异常求助

Windows Spark集群REST API提交Python任务报错排查与解决

我在Windows系统部署了Spark集群,尝试通过REST API提交一个简单的HelloWorld Python任务,代码如下:

from pyspark.sql import SparkSession
def main(args):
    print('hello world')
    return 0
if __name__ == '__main__':
  main(None)

提交任务使用的URL为:http://<Master IP>:6066/v1/submissions/create
请求体如下:

{
    "appResource": "file:../../helloworld.py",
    "sparkProperties": {
        "spark.executor.memory": "2g",
        "spark.master": "spark://<Master IP>:7077",
        "spark.app.name": "Spark REST API - Hello world",
        "spark.driver.memory": "2g",
        "spark.eventLog.enabled": "false",
        "spark.driver.cores": "2",
        "spark.submit.deployMode": "cluster",
        "spark.driver.supervise": "true"
    },
    "clientSparkVersion": "3.3.1",
    "mainClass": "org.apache.spark.deploy.SparkSubmit",
    "environmentVariables": {
        "SPARK_ENV_LOADED": "1"
    },
    "action": "CreateSubmissionRequest",
    "appArgs": [
        "../../helloworld.py", "80"
    ]
}

通过Postman发送请求后,得到成功提交的响应:

{
    "action": "CreateSubmissionResponse",
    "message": "Driver successfully submitted as driver-20221216112633-0005",
    "serverSparkVersion": "3.3.1",
    "submissionId": "driver-20221216112633-0005",
    "success": true
}

但查询任务状态(URL:http://<Master IP>:6066/v1/submissions/status/driver-20221216112633-0005)时,返回driverState为ERROR,出现NullPointerException:

{
    "action": "SubmissionStatusResponse",
    "driverState": "ERROR",
    "message": "Exception from the cluster:\njava.lang.NullPointerException\n\torg.apache.spark.deploy.worker.DriverRunner.downloadUserJar(DriverRunner.scala:158)\n\torg.apache.spark.deploy.worker.DriverRunner.prepareAndRunDriver(DriverRunner.scala:179)\n\torg.apache.spark.deploy.worker.DriverRunner$$anon$2.run(DriverRunner.scala:99)",
    "serverSparkVersion": "3.3.1",
    "submissionId": "driver-20221216112633-0005",
    "success": true,
    "workerHostPort": "10.9.8.120:56060",
    "workerId": "worker-20221216093629-<IP>-56060"
}

我原本预期这个简单的HelloWorld任务会处于RUNNING或FINISHED状态,不清楚错误原因及排查方向,特此求助。


2022-01-12 更新:
我已找到解决方案:需要确保appResource和spark.jars中指定的py/jar文件能被集群所有节点访问,比如使用网络共享路径:

{
    "appResource": "file:////Servername/somefolder/HelloWorld.jar",
    ...
    "spark.jars": "file:////Servername/someFolder/HelloWorld.jar",
    ...
}

希望能帮到其他人,同时想请教:为何提交任务到Master后,仍需所有节点都能访问该文件?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:50:42