如何在Databricks作业中添加ODBC初始化脚本解决驱动缺失问题?
解决Databricks作业ODBC驱动找不到的问题
一、先核对集群初始化脚本的配置是否到位
你说已经给集群配了初始化脚本,但先确认这几点没出错:
- 打开Databricks控制台找到目标集群,点编辑
- 切到高级选项里的初始化脚本标签
- 确认脚本路径是
dbfs:/Volumes/projects/default/admin/odbc.sh(Volumes路径必须加dbfs:/前缀才能被Databricks识别) - 脚本类型选Shell,状态是启用的
- 改完配置必须重启集群——初始化脚本只在集群启动时执行,不重启等于白配
二、作业级单独指定初始化脚本(适合共享集群场景)
如果集群是多人共享的不想改全局配置,或者作业需要独立用这个脚本,直接在作业里配置:
单任务作业
- 创建/编辑作业时,在任务板块的集群配置里:
- 选现有集群:确保这个集群已经按上面的步骤配好并重启过
- 新建集群:切到高级选项→初始化脚本,添加
dbfs:/Volumes/projects/default/admin/odbc.sh,类型选Shell,再创建集群
- 保存后重新运行作业
多任务工作流
- 要么给每个任务对应的集群单独加脚本,要么在工作流的统一集群配置里添加初始化脚本
三、检查初始化脚本本身是否真的装了驱动
如果配置都对还是报错,大概率是脚本没正确安装驱动:
- 脚本里得有安装ODBC Driver 17的命令,比如针对Debian/Ubuntu集群:
#!/bin/bash sudo apt-get update sudo apt-get install -y msodbcsql17 unixodbc-dev - 去集群日志里看脚本执行情况:进集群详情页→日志→初始化脚本日志,搜
odbc.sh的输出,看有没有安装失败的报错 - 也可以在集群的笔记本里跑命令验证:Debian系用
dpkg -l | grep msodbcsql17,RHEL系用yum list installed | grep msodbcsql17,确认驱动真的装上了
四、临时 workaround:代码里手动指定驱动路径
要是上面都没用,直接在Python代码里写死驱动的绝对路径:
import pyodbc conn = pyodbc.connect( 'DRIVER=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.2.1;' 'SERVER=<你的服务器地址>;' 'DATABASE=<你的数据库名>;' 'UID=<用户名>;' 'PWD=<密码>' )
内容的提问来源于stack exchange,提问作者LunaLoveDove
相关产品推荐
相关产品推荐

