如何在AWS Glue Python ETL任务中安装pyodbc及ODBC驱动连接SQL Server
在AWS Glue Python ETL任务中配置pyodbc与SQL Server ODBC驱动
AWS Glue默认运行环境不包含pyodbc和SQL Server ODBC驱动,以下是两种可靠的配置方案:
方案一:使用自定义Python库+预装驱动的Glue版本
1. 生成适配Glue环境的pyodbc wheel包
Glue基于Amazon Linux运行,本地生成的pyodbc包无法兼容,需在对应环境编译:
- 启动一台Amazon Linux 2 EC2实例,安装编译依赖:
sudo yum install gcc-c++ unixODBC-devel -y - 生成wheel包:
pip wheel pyodbc --wheel-dir ./pyodbc_wheels - 将生成的
.whl包上传至你的S3存储桶(例如s3://your-glue-resources/libs/pyodbc/)
2. 确认ODBC驱动状态
Glue 3.0及以上版本已预装Microsoft ODBC Driver 17 for SQL Server,无需额外安装。若使用更低版本,可通过初始化脚本安装:
将以下脚本保存为install-driver.sh并上传至S3,在Glue作业配置中指定为初始化脚本路径:
sudo yum install -y https://packages.microsoft.com/config/rhel/7/prod.repo sudo yum install -y msodbcsql17 unixODBC-devel sudo yum clean all
3. 配置Glue作业
- 在Glue作业配置页的Python库路径中,填入S3上pyodbc wheel包的完整路径
- 在ETL脚本中正常使用pyodbc:
import pyodbc conn_str = ( "Driver={ODBC Driver 17 for SQL Server};" "Server=USXXX00345,67800;" "Database=DB02;" "UID=Alex;" "PWD=Alex123;" ) conn = pyodbc.connect(conn_str) # 执行查询、数据处理等操作
方案二:使用自定义Docker镜像(Glue 2.0+)
若需要更灵活的环境定制,可构建自定义镜像:
- 创建Dockerfile:
FROM amazon/aws-glue-libs:glue-3.0 # 安装SQL Server ODBC驱动 RUN yum install -y https://packages.microsoft.com/config/rhel/7/prod.repo && \ yum install -y msodbcsql17 unixODBC-devel && \ yum clean all # 安装pyodbc RUN pip install pyodbc - 构建镜像并推送到Amazon ECR仓库
- 创建Glue作业时选择自定义镜像,指定ECR中的镜像地址
内容的提问来源于stack exchange,提问作者Tristan Tran
相关产品推荐
相关产品推荐

