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

Glue动态框架无法从S3存储桶加载数据问题求助

Glue任务加载S3 Parquet文件时Dynamic Frame为空的排查方案

问题描述

直接指定S3上存在数据的Parquet文件路径,但Glue的Dynamic Frame加载后为空,同类配置的任务可正常运行(已关闭书签功能)。示例代码如下:

input_dyf = glueContext.create_dynamic_frame.from_options("s3", {
        "paths": ['s3://dev/.test/load_year=2023/load_month=2/load_day=22/.test.parquet'],
        "recurse": False,
        "groupFiles": "inPartition",
    },
    format = "parquet",
    transformation_ctx = "DataSource0"
)

排查与解决步骤

  • 检查隐藏文件规则
    Glue默认会忽略文件名以.开头的隐藏文件,当前目标文件.test.parquet属于此类。尝试将文件名修改为非隐藏格式(如test.parquet)后重新测试。
  • 验证Parquet文件有效性
    使用AWS CLI命令校验文件是否为有效Parquet格式且包含数据:
    aws s3 cp s3://dev/.test/load_year=2023/load_month=2/load_day=22/.test.parquet - | parquet-tools head
    
  • 调整文件分组参数
    当前设置groupFiles: "inPartition",但直接指向单个文件时该参数不适用。尝试移除groupFiles配置,或改为groupFiles: "none"。
  • 确认IAM角色权限
    检查该任务使用的IAM角色是否拥有目标S3路径的s3:GetObject权限,即使同类任务权限相同,也可能存在隐藏目录/文件的权限差异。
  • 添加数据校验日志
    在代码中添加日志输出,查看Dynamic Frame的加载详情:
    print(f"Dynamic Frame记录数: {input_dyf.count()}")
    input_dyf.printSchema()
    
    运行任务后查看CloudWatch日志,确认是否存在加载报错或元数据异常。
  • 关闭分区推断
    路径包含load_year=2023这类分区键,直接指向单个文件时Glue可能因分区推断逻辑导致加载异常。尝试关闭分区推断:
    input_dyf = glueContext.create_dynamic_frame.from_options("s3", {
            "paths": ['s3://dev/.test/load_year=2023/load_month=2/load_day=22/.test.parquet'],
            "recurse": False,
            "groupFiles": "none",
            "enablePartitioning": False
        },
        format = "parquet",
        transformation_ctx = "DataSource0"
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:42:11