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
相关产品推荐
相关产品推荐

