You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glue3.0导入awsglueml下FillMissingValues报ImportError如何解决

问题根因

核心原因是Glue 3.0内置的awsglueml包版本和公开最新官方文档不匹配:FillMissingValues这个转换类从未在Glue 3.0预装的awsglueml版本中发布。
从报错路径里的Python 3.6站点包路径就能佐证:Glue 3.0基于Spark 3.1、Python 3.6构建,预装的awsglueml是2021年的初始版本,仅包含实体匹配、FindMatches这类早期ML转换能力,缺失值填充、异常值处理这类transform都是后续Glue版本迭代才新增的,你按照最新文档写的导入逻辑本身没有错,问题出在文档没有标注功能对应的最低Glue版本。

排查与解决步骤
  • 第一步先做环境校验,排除导入写法问题
    在Glue脚本开头加如下代码,打印当前环境awsglueml.transforms模块的所有导出成员:
    import awsglueml.transforms as ml_transforms
    print(ml_transforms.__all__ if hasattr(ml_transforms, "__all__") else dir(ml_transforms))
    
    运行后输出的列表里不会出现FillMissingValues,就能确认是环境版本缺失导致的报错,和你的代码写法无关。
  • 最稳妥的解决方式:升级Glue版本
    直接把Glue作业/开发端点的运行版本升级到Glue 4.0及以上,这些版本预装的awsglueml已经同步了包含FillMissingValues在内的所有新转换类,升级后原有导入、调用代码不需要任何修改就能正常运行。

    注意:如果作业依赖Glue 3.0专属的第三方自定义包,升级前先做Spark 3.3+(Glue4.0对应Spark版本)的兼容性验证,避免版本差异触发其他运行错误。

  • 无法升级版本的兼容方案
    如果受业务限制必须留在Glue 3.0,不要尝试手动pip升级awsglueml包——Python3.6环境和新版awsglueml的依赖完全不兼容,会触发更多连锁报错。直接用Spark原生API实现同等缺失值填充逻辑即可,示例:
    from awsglue import DynamicFrame
    from pyspark.sql.functions import coalesce, col, lit
    # 如需实现和FillMissingValues默认一致的众数填充,先统计对应字段的高频值
    mode_val = dyf.toDF().groupBy("demographic").count().orderBy("count", ascending=False).first()[0]
    # 转DataFrame执行填充,再转回DynamicFrame
    filled_df = dyf.toDF().withColumn("demographic", coalesce(col("demographic"), lit(mode_val)))
    dyf = DynamicFrame.fromDF(filled_df, glueContext, "filled_dyf")
    

内容的提问来源于stack exchange,提问作者Jérémy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:12:21