如何在指定配置的Databricks集群安装ODBC Driver 17 for SQL Server?
- 连接SQL Server时的错误:
Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")
- 尝试安装ODBC驱动的命令:
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/ubuntu/22.04/prod > /etc/apt/sources.list.d/mssql-release.list sudo apt update sudo apt-get install -y msodbcsql17
- 安装时的报错信息:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 983 100 983 0 0 10611 0 --:--:-- --:--:-- --:--:-- 10684
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
E: This command can only be used by root.
bash: line 2: /etc/apt/sources.list.d/mssql-release.list: Permission denied
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a password is required
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a password is required
- 集群配置:
Summary
1-2 Workers 14-28 GB Memory
4-8 Cores 1
Driver 14 GB Memory, 4 Cores
Runtime 14.3.x-scala2.12
Unity Catalog, Standard_DS3_v2, 1–3 DBU/h
方法1:集群初始化脚本(推荐)
Databricks集群启动时会以root权限执行初始化脚本,可一次性在所有节点(Driver+Workers)安装驱动,且重启集群后仍生效:
- 创建脚本文件
install_odbc_driver.sh,内容如下:
#!/bin/bash # 添加Microsoft GPG密钥(适配apt-key废弃后的新规范) curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg # 添加SQL Server软件源 curl https://packages.microsoft.com/ubuntu/22.04/prod > /etc/apt/sources.list.d/mssql-release.list # 更新源并自动接受协议安装驱动 apt-get update ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev
- 将脚本上传到DBFS,比如路径为
dbfs:/databricks/scripts/install_odbc_driver.sh。 - 编辑集群配置,在高级选项→初始化脚本中添加上述DBFS路径,重启集群即可完成安装。
方法2:笔记本临时安装(仅测试用)
若仅需临时在当前节点安装,可修改命令解决权限问题,但集群重启后会失效:
%sh # 用sudo -S绕过终端密码要求,Databricks节点默认sudo无需密码 echo "" | sudo -S curl https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg echo "" | sudo -S curl https://packages.microsoft.com/ubuntu/22.04/prod > /etc/apt/sources.list.d/mssql-release.list echo "" | sudo -S apt update echo "" | sudo -S ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev
验证安装结果
运行以下命令确认驱动是否安装成功:
%sh odbcinst -q -d -n "ODBC Driver 17 for SQL Server"
若输出驱动的配置信息,说明安装完成。
内容的提问来源于stack exchange,提问作者preeti tank

