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

Glue Job访问Catalog S3分区表报HadoopDataSource跳过分区错误如何解决

问题根因

你遇到的跳过分区提示确实是Glue Job Bookmark的默认行为导致的:当Bookmark功能开启时,Glue只会处理自上次Job成功运行后新增的文件,已处理过的分区内如果只是更新原有文件、没有新增文件,会被默认判定为无新数据跳过。你之前修改transformationContext的操作没有生效,是因为Bookmark的全局开关没有关闭的前提下,Glue还是会保留历史处理记录。


解决方案

方案1:直接关闭Job的Bookmark功能(最通用,满足每次拉全量的需求)

不需要修改代码,直接在Glue Job的配置页操作:

  • 找到对应Glue Job,进入「作业详细信息」页
  • 找到「作业书签」选项,选择「禁用」
  • 保存配置后重新运行Job即可,每次运行都会拉取表下所有分区的全量数据,不会跳过任何分区

方案2:如果不能关闭全局Bookmark,修改代码强制全量扫描

如果你的Job其他逻辑需要用到Bookmark,不想全局关闭,可以在调用getCatalogSource时额外添加additionalOptions参数强制全量读取:

glueContext.getCatalogSource(
    database = "DB_NAME", 
    tableName = "TABLE_NAME", 
    redshiftTmpDir = "", 
    transformationContext = "datasource0",
    # 新增下面的参数
    additionalOptions = {"loadAllFiles": "true"}
).getDynamicFrame().toDF()

这个参数会让Glue忽略Bookmark的历史记录,每次都读取目标表的所有文件。

方案3:如果依赖库代码无法修改,配置Job参数强制全量加载

如果调用getCatalogSource的逻辑在依赖包里你改不了,也不想关闭全局Bookmark,可以给Job添加运行时参数:

  • 进入Glue Job的「作业参数」配置
  • 添加参数:--conf,值为 spark.glue.fileList.partition.files.loadAll=true
  • 保存后重新运行即可,这个参数会全局生效,所有CatalogSource读取都会默认拉全量文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 03:54:06