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

Databricks通过CI/CD上传至DBFS的init脚本偶发不生效问题咨询

问题根因

这是换行符格式不兼容导致的,具体原理如下:

  • 你本地/CI/CD运行环境生成的bash脚本使用的是Windows风格换行符(CRLF,即\r\n),而Databricks集群底层是Linux操作系统,仅默认识别Unix风格换行符(LF,即\n)
  • 报错信息里update-ca-certificates和后面的: command not found分成两行,就是因为命令末尾携带了不可见的\r控制字符,bash会把update-ca-certificates\r整体识别为命令名,自然找不到对应可执行文件
  • 普通cat命令不会打印\r这类不可见控制字符,所以你肉眼对比两个脚本会觉得内容完全一致
验证方法

执行以下命令即可看到不可见字符,确认换行符格式问题:

cat -A /dbfs/databricks/init-scripts/custom-cert.sh

若输出的每行末尾都带有^M$,则说明是CRLF格式的错误换行;正常Linux可执行脚本的行尾仅显示$

修复方案

任选其一即可:

  • 本地编辑脚本时,直接将编辑器的换行符格式设置为Unix(LF)后再保存,主流代码编辑器(VSCode、Notepad++、JetBrains系列等)均支持该配置
  • 在CI/CD流水线的上传步骤前,增加转换换行符的处理,用dos2unix工具格式化脚本:
# 先安装dos2unix(根据CI环境的包管理器调整安装命令)
apt install -y dos2unix
# 转换脚本换行格式
dos2unix custom-cert.sh
# 后续执行原有的上传DBFS逻辑
  • 若不方便修改CI流程和本地编辑配置,可直接在脚本首行后新增忽略回车符的配置:
#!/bin/bash
set -o igncr
# 后续原有脚本内容保持不变
cp /dbfs/orgcertificates/orgcerts.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
echo "export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt" >> /databricks/spark/conf/spark-env.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:18:04