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

AWS Glue Python作业写入Delta Lake报错:找不到spark_catalog插件类

解决AWS Glue作业写入Delta Lake的配置错误

错误原因

你添加的spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog配置与AWS Glue默认Catalog冲突。Glue默认使用HiveCatalog作为spark_catalog,强行替换为DeltaCatalog会导致Glue无法找到对应类,从而抛出Cannot find catalog plugin class错误。

解决方案

1. 修改作业参数

调整高级属性中的作业参数,移除DeltaCatalog的配置,保留必要的Delta扩展和兼容配置:

  • --conf:spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension --conf spark.databricks.delta.formatCheck.enabled=false
  • --packages:保持io.delta:delta-core_2.12:2.1.0(注意:若你的Glue版本是3.0,需改为io.delta:delta-core_2.12:1.2.1,因为Glue 3.0对应Spark 3.1,Delta 1.2.1为兼容版本)

2. 代码验证与优化

你的作业代码逻辑本身无问题,调整配置后即可重新运行。若需优化,可使用Glue专用的Delta Lake Sink,示例如下:

# 替换原有的DataFrame write部分
additional_options = {
    "path": delta_table_path,
    "write.parquet.compression-codec": "snappy",
    "mergeSchema": "true",
}
glueContext.write_dynamic_frame.from_options(
    frame=S3bucket_node1,
    connection_type="s3",
    format="delta",
    connection_options=additional_options,
    transformation_ctx="sink_to_delta_lake",
)

关键说明

  • 不要修改Glue默认的spark_catalog,Delta Lake在Glue环境中无需替换默认Catalog即可正常使用。
  • spark.databricks.delta.formatCheck.enabled=false用于关闭Delta的格式检查,避免Glue环境中的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:52:43