Azure Databricks安装ODBC Driver 17时sudo权限问题求助
解决Azure Databricks安装ODBC驱动17的权限问题
问题根源
Azure Databricks集群的普通用户会话(比如%sh魔法命令)没有sudo权限,无法直接执行需要root权限的apt操作,必须通过集群初始化脚本完成驱动安装——初始化脚本会以root身份在集群启动时运行。
具体解决步骤
创建初始化脚本
在Databricks工作区中创建名为install_odbc_driver.sh的脚本,内容如下:#!/bin/bash curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list apt-get update ACCEPT_EULA=Y apt-get -q -y install msodbcsql17注意:无需加
sudo,初始化脚本本身以root权限执行。上传脚本到DBFS
将脚本上传到Databricks文件系统(DBFS),比如路径dbfs:/databricks/scripts/install_odbc_driver.sh。可通过Databricks UI的"数据"面板上传,或用CLI命令:databricks fs cp install_odbc_driver.sh dbfs:/databricks/scripts/install_odbc_driver.sh配置集群使用初始化脚本
- 进入集群配置页面,找到「高级选项」→「初始化脚本」
- 添加脚本路径:
dbfs:/databricks/scripts/install_odbc_driver.sh - 重启集群,脚本会在集群启动时自动完成驱动安装
验证安装结果
集群重启后,运行以下%sh命令验证驱动是否安装成功:odbcinst -q -d -n "ODBC Driver 17 for SQL Server"若输出驱动相关信息,说明安装成功。
安装pyodbc
直接在集群的「库」面板添加pyodbc包,或执行%pip install pyodbc命令即可,此步骤无需root权限。
原方法失效原因
%sh命令在普通用户会话中执行,无sudo权限,无法修改系统级目录或执行apt操作- 普通用户未配置sudo密码,即使尝试
sudo -s也无法切换到root身份
内容的提问来源于stack exchange,提问作者user21677797
相关产品推荐
相关产品推荐

