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

在Databricks SQL Engine查询AWS Glue Catalog中Delta表失败求助

解决Databricks SQL查询Glue Catalog中Delta表失败的问题

问题根源

AWS Glue爬虫默认将带有_symlink_format_manifest的Delta表识别为Parquet表,生成的元数据采用Hive兼容的输入输出格式、Parquet SerDe,且表分类标记为parquet。但Databricks会检测到Delta表根目录下的_delta_log事务日志,强制要求使用Delta格式读取,两者冲突导致报错。

解决方案

1. 修正Glue表元数据(核心解决)

直接修改Glue Catalog中目标表的元数据,让Databricks正确识别为Delta表:

  • 控制台操作:
    1. 登录AWS Glue控制台,找到对应数据库和表
    2. 进入表编辑页面,修改以下配置:
      • 将存储位置改为Delta表根路径:s3://COMPANY/club/attachment(移除末尾的/_symlink_format_manifest)
      • 更新输入格式为io.delta.hive.DeltaInputFormat
      • 更新输出格式为io.delta.hive.DeltaOutputFormat
      • 更新序列化库为io.delta.hive.DeltaSerDe
      • 将分类参数改为delta
      • 添加表级参数delta.table=true
  • CLI批量操作:
aws glue update-table \
  --database-name 你的数据库名 \
  --table-input '{
    "Name": "attachment",
    "StorageDescriptor": {
      "cols": [
        {"name": "id", "type": "string"},
        {"name": "media", "type": "string"},
        {"name": "media_type", "type": "string"},
        {"name": "title", "type": "string"},
        {"name": "type", "type": "smallint"},
        {"name": "clubmessage_id", "type": "string"}
      ],
      "location": "s3://COMPANY/club/attachment",
      "inputFormat": "io.delta.hive.DeltaInputFormat",
      "outputFormat": "io.delta.hive.DeltaOutputFormat",
      "SerDeInfo": {
        "serializationLib": "io.delta.hive.DeltaSerDe"
      },
      "parameters": {
        "UPDATED_BY_CRAWLER": "CRAWLER_NAME",
        "classification": "delta"
      }
    },
    "parameters": {
      "UPDATED_BY_CRAWLER": "CRAWLER_NAME",
      "classification": "delta",
      "delta.table": "true"
    }
  }'

2. 调整Glue爬虫配置(避免重复问题)

修改爬虫设置,防止后续同步时再次误识别:

  • 在爬虫的分类配置中,添加delta作为优先分类,确保爬虫优先识别Delta格式
  • 或在爬虫的排除路径中添加/_symlink_format_manifest/**,避免爬虫读取manifest文件而误判为Parquet表

3. 临时应急方案(不推荐长期使用)

若无法立即修改元数据,可在Databricks SQL Warehouse中执行以下命令禁用格式检查:

SET spark.databricks.delta.formatCheck.enabled=false;

⚠️ 注意:此方法会跳过Delta格式一致性校验,可能导致数据读取异常,仅作为临时应急手段。

验证

完成配置修改后,在Databricks SQL中重新执行查询,确认报错消失,数据正常返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:18:19