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

Glue作业无法识别Delta Lake Python库问题求助

解决Glue作业中DeltaTable未定义的NameError问题

以下是针对该问题的具体排查和解决步骤:

  • 必须导入DeltaTable类
    代码中使用DeltaTable但未导入是最常见的原因,在代码开头添加导入语句:

    from delta.tables import DeltaTable
    
  • 修正--datalake-formats参数格式
    你当前的参数写法带有空格(--datalake-formats = delta),可能导致参数不生效,需改为无空格的格式:

    --datalake-formats delta
    

    或:

    --datalake-formats=delta
    
  • 确认Spark配置的正确添加方式
    建议直接在Glue作业控制台的Spark configuration字段中添加Delta相关配置,而非仅在代码中设置:

    spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension
    spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog
    

    若坚持在代码中配置,需确保在SparkSession初始化前完成设置,例如:

    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    
    sc = SparkContext.getOrCreate()
    sc._conf.set("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
    sc._conf.set("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
    
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    
  • 检查Glue版本兼容性

    • Glue 3.0及以上版本:默认支持Delta Lake,只需配置--datalake-formats delta即可,无需手动上传依赖包。
    • Glue 2.0版本:需自行下载对应Spark 2.4版本的Delta Lake包,上传至S3,然后在作业的Python library path中添加该包的S3路径。
  • 验证SparkSession实例的正确性
    确保代码中使用的是GlueContext提供的SparkSession,而非自定义的普通SparkSession,示例:

    deltaTable = DeltaTable.forPath(glueContext.spark_session, self.dest_path_sdad)
    

内容的提问来源于stack exchange,提问作者Jatin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:15:46