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

Glue 5.0写入Delta Lake触发AnalysisException错误求助

Glue 5.0 写入Delta Lake 截断AnalysisException 解决建议

核心原因

Glue 5.0相较于4.0,对Delta Lake的依赖配置逻辑有所调整,不再默认注入Delta Lake运行必需的SparkSession扩展参数,导致写入操作触发配置缺失的异常。

解决步骤

  • 显式配置SparkSession参数
    在初始化GlueContext前,手动添加Delta Lake要求的核心配置:

    from pyspark.sql import SparkSession
    from awsglue.context import GlueContext
    
    spark = SparkSession.builder \
        .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
        .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \
        .getOrCreate()
    
    glueContext = GlueContext(spark)
    
  • 通过作业参数全局配置
    在Glue作业的「作业参数」面板中添加以下配置项,无需修改代码即可生效:

    • --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension
    • --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog
  • 验证Delta版本兼容性
    Glue 5.0对应的Delta Lake版本通常为2.4.x系列,若作业依赖了自定义Delta包,需确保版本与Glue 5.0兼容,避免依赖冲突。

  • 完整写入示例
    配置完成后,执行常规的Parquet读取与Delta写入操作:

    # 读取Parquet数据源
    dynamic_frame = glueContext.create_dynamic_frame.from_options(
        connection_type="s3",
        connection_options={"paths": ["s3://your-bucket/parquet-path/"]},
        format="parquet"
    )
    df = dynamic_frame.toDF()
    
    # 写入Delta Lake
    df.write.format("delta").mode("overwrite").save("s3://your-bucket/delta-path/")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:17:02