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

Azure Databricks中Spark-Submit提交.NET Core3.1作业失败:INIT_SCRIPT_FAILURE

问题诊断与解决方案

核心错误定位

集群启动失败直接源于初始化脚本/Shared/db-init.sh执行返回非零状态,结合你的环境配置,重点排查以下几个方向:

1. 发布环境不匹配(win-x64 vs Linux节点)

你使用VS2019发布时选择了win-x64自包含模式,但Databricks运行时10.4基于Linux系统,Windows二进制文件无法在Linux节点上运行,这会直接导致后续程序执行失败,甚至干扰初始化脚本逻辑。

修复步骤:

  • 重新发布项目:在VS2019中选择「自包含」模式,运行时目标改为linux-x64,重新生成Zip包后替换DBFS路径/dbfs/spark-dotnet/HelloSparkCore31.zip下的旧文件。

2. 初始化脚本权限与逻辑错误

Workspace中的脚本默认可能无执行权限,或脚本内部路径、命令存在错误:

排查与修复:

  • 给脚本添加执行权限:在Databricks笔记本中执行以下命令:
    chmod +x /dbfs/spark-dotnet/db-init.sh
    chmod +x /dbfs/spark-dotnet/install-worker.sh
    
  • 检查db-init.sh内容,确保关键逻辑正确(参考微软官方脚本示例):
    #!/bin/bash
    set -ex
    WORKER_DIR=/opt/microsoft/spark/worker
    mkdir -p "$WORKER_DIR"
    # 解压Linux版本的Spark Worker包
    tar xzf /dbfs/spark-dotnet/Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-2.1.1.tar.gz -C "$WORKER_DIR"
    # 设置环境变量
    echo "export SPARK_DOTNET_WORKER_DIR=$WORKER_DIR" >> /databricks/spark/conf/spark-env.sh
    
  • 确保脚本中所有文件路径均指向DBFS的正确位置(如/dbfs/spark-dotnet/xxx),避免使用相对路径。

3. 初始化脚本路径映射问题

集群配置中指定的/Shared/db-init.sh是Workspace路径,在Linux节点上实际映射为/dbfs/FileStore/shared_uploads/下的对应目录,若脚本内部引用路径错误会导致文件找不到。

验证方法:

  • 进入集群详情页 → 点击「Event logs」→ 定位「Init script failed」相关日志,查看具体错误输出(如命令执行失败、文件不存在、权限被拒等),精准定位问题行。

4. 版本兼容性确认

你使用的Spark 3.2.1与microsoft-spark-3-2_2.12-2.1.1.jar版本匹配,但需确认DBFS中的jar包和Worker包未损坏,可重新下载官方包替换。

修复后完整流程

  1. 重新发布适配Linux的项目包;
  2. 给初始化脚本添加执行权限;
  3. 修正db-init.sh的路径与逻辑;
  4. 重启集群并重新提交作业。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:19:54