
AWS Glue 4.0 官方镜像(如 glue_libs_4.0.0_image_01)尚未包含 awsgluedq 模块,导致 ImportError: No module named 'awsgluedq',需降级至 Glue 3.x 镜像或手动集成兼容版本。
aws glue 4.0 官方镜像(如 `glue_libs_4.0.0_image_01`)尚未包含 `awsgluedq` 模块,导致 `importerror: no module named 'awsgluedq'`,需降级至 glue 3.x 镜像或手动集成兼容版本。
awsgluedq 是 AWS Glue Data Quality(DQ)功能的核心 Python 包,用于调用 EvaluateDataQuality 等数据质量评估转换器。尽管官方文档指出 Glue 3.0+ 支持该模块,实际在 amazon/aws-glue-libs:glue_libs_4.0.0_image_01(含 ARM64/AMD64 版本)中,该包并未预装——这一问题已在 aws-glue-libs GitHub Issue #200 中被确认为已知缺陷。
✅ 推荐解决方案:切换至 Glue 3.x 镜像
Glue 3.x 系列镜像(如 glue_libs_3.0.0_image_01 或 glue_libs_3.0.1_image_01)已稳定集成 awsgluedq。请将 Docker 命令中的镜像标签替换为兼容版本:
docker run -it \ -v ~/.aws:/home/glue_user/.aws \ -v "$WORKSPACE_LOCATION":/home/glue_user/workspace/ \ -e AWS_PROFILE="$PROFILE_NAME" \ -e DISABLE_SSL=true \ --rm -p 4040:4040 -p 18080:18080 \ --name glue_spark_submit \ amazon/aws-glue-libs:glue_libs_3.0.1_image_01 \ spark-submit /home/glue_user/workspace/src/$SCRIPT_FILE_NAME
⚠️ 注意:Glue 3.x 与 4.x 在 Spark 版本(3.3.x vs 3.5.x)、Python 运行时及部分 API 行为上存在差异。若作业依赖 Glue 4.x 新特性(如 Iceberg 表支持、Delta Lake 3.0+),需权衡功能取舍或等待 AWS 官方修复。
? 替代方案(高级用户)
若必须使用 Glue 4.0 镜像,可尝试通过 --packages 参数动态加载 DQ 依赖(需验证兼容性):
spark-submit \ --packages "com.amazonaws:aws-glue-dataquality_2.12:1.0.0" \ --conf "spark.jars.packages=com.amazonaws:aws-glue-dataquality_2.12:1.0.0" \ ...
但请注意:
- 此 JAR 仅提供 Scala/Java 接口,Python 绑定
awsgluedq仍不可用; - 手动构建 wheel 并
pip install存在 ABI 兼容风险,不推荐生产环境使用。
✅ 验证是否生效
运行成功后,在脚本中执行以下检查:
try:
from awsgluedq.transforms import EvaluateDataQuality
print("✅ awsgluedq imported successfully")
except ImportError as e:
print("❌ Failed to import awsgluedq:", e)总结:当前阶段,降级至 glue_libs_3.0.1_image_01 是最可靠、零配置的解决方案。建议关注 aws-glue-libs GitHub Releases 获取 awsgluedq 支持状态更新,待 AWS 发布含该模块的 Glue 4.x 修正镜像后再平滑升级。

















