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

如何在AWS Glue作业中排除S3上的.hoodie目录与.commit文件

AWS Glue读取HUDI生成的Athena表时,无法排除HUDI元数据文件的问题

问题现象

在AWS Glue作业中调用create_dynamic_frame.from_catalog读取由HUDI填充的Athena表时,触发错误:提示s3://bucket/folder/.hoodie下的.commit文件不是Parquet格式。该问题已在GitHub上记录,但暂无官方解决方案。我们尝试通过additional_options的exclusions参数分别排除.hoodie目录和.commit文件,但均未生效,需要找到能同时过滤所有HUDI元数据资源的方法。

已尝试的解决方案

  • 尝试排除.hoodie目录:
datasource0 = glueContext.create_dynamic_frame.from_catalog(
    database=args['ENV']+"_some_database", 
    table_name="some_table", 
    transformation_ctx="datasource_x1", 
    additional_options={"exclusions": "[\".hoodie/**\"]"}
)
  • 尝试排除.commit文件:
datasource0 = glueContext.create_dynamic_frame.from_catalog(
    database=args['ENV']+"_some_database", 
    table_name="some_table", 
    transformation_ctx="datasource_x1", 
    additional_options={"exclusions": "[\"**.commit\"]"}
)

可行解决方案

调整exclusions参数的正则表达式,同时匹配.hoodie目录下的所有内容以及所有.commit文件,正确的代码如下:

datasource0 = glueContext.create_dynamic_frame.from_catalog(
    database=args['ENV']+"_some_database", 
    table_name="some_table", 
    transformation_ctx="datasource_x1", 
    additional_options={
        "exclusions": "[\".hoodie/.*\", \"**.commit\"]"
    }
)

原理说明

Glue的exclusions参数接受JSON格式的正则表达式数组,之前的尝试存在两个问题:

  1. 单独排除目录时,.hoodie/**的匹配规则不符合Glue的正则语法,改用.hoodie/.*可以精准匹配.hoodie目录下的所有文件及子目录
  2. 将多个排除规则合并到同一个数组中,用逗号分隔,即可同时过滤HUDI的元数据目录和独立的.commit文件

如果上述方法仍未生效,可以尝试在Athena表的存储配置中直接添加排除路径,或者改用create_dynamic_frame.from_options直接指定S3路径并配置过滤规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:50:29