如何在AWS Glue Python Shell中安装ODBC驱动解决pyodbc报错
解决AWS Glue Python Shell中ODBC驱动缺失问题
方法一:使用自定义镜像预安装驱动
基于AWS官方Glue Python Shell镜像构建自定义镜像,在镜像构建阶段完成驱动安装:
- 创建Dockerfile示例:
FROM amazon/aws-glue-python-shell:latest # 安装基础依赖 RUN yum install -y unixODBC unixODBC-devel # 添加微软yum源并安装ODBC Driver 17 RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo RUN ACCEPT_EULA=Y yum install -y msodbcsql17 - 构建镜像并推送到AWS ECR仓库
- 在Glue作业配置中选择该自定义镜像作为运行环境
方法二:通过初始化脚本实时安装
编写Shell脚本作为Glue作业的初始化脚本,作业启动时自动安装驱动:
- 创建
install_odbc.sh脚本:#!/bin/bash yum install -y unixODBC unixODBC-devel curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo ACCEPT_EULA=Y yum install -y msodbcsql17 - 将脚本上传到S3存储桶
- 在Glue作业配置的「初始化脚本」中指定该S3路径
- 确保Glue作业角色拥有访问该S3路径以及执行yum安装的网络权限
方法三:使用预打包的Glue层
预先编译好驱动文件,打包成Glue层供作业调用:
- 在Amazon Linux 2环境(与Glue Python Shell一致)中安装ODBC驱动,收集
/opt/microsoft/msodbcsql17/lib64/下的相关库文件 - 将库文件打包为zip包,上传到S3
- 在Glue控制台创建层并关联该zip包
- 在作业中添加该层,代码里指定驱动路径:
import pyodbc conn = pyodbc.connect( f'DRIVER=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.2.1;' f'SERVER=你的服务器地址;' f'DATABASE=你的数据库;' f'UID=用户名;' f'PWD=密码' )
注意事项
- Glue Python Shell基于Amazon Linux 2,所有安装操作需适配该系统
- 作业角色需具备对应权限:S3访问、ECR镜像拉取(若用自定义镜像)、访问微软yum源的网络权限
内容的提问来源于stack exchange,提问作者yunus kula
相关产品推荐
相关产品推荐

