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

如何通过AWS Glue及Athena获取S3存储桶内最新Parquet文件数据

可以通过Parquet文件的S3路径识别最新文件,以下是不同场景下的具体实现方案:

方案1:基于Hive分区表(最推荐)

如果你的S3路径按Hive分区规则组织(例如s3://bucket-name/data/year=2024/month=05/day=20/xxx.parquet),优先用该方案:

  • 首先创建分区外部表,示例代码如下:
CREATE EXTERNAL TABLE IF NOT EXISTS your_table_name (
  column1 string,
  column2 int,
  -- 其他字段按实际Parquet结构补充
)
PARTITIONED BY (year string, month string, day string)
STORED AS PARQUET
LOCATION 's3://your-bucket/your-data-path/'
TBLPROPERTIES ('parquet.compression'='SNAPPY'); -- 按实际压缩格式调整
  • 执行分区加载语句同步所有S3分区:
MSCK REPAIR TABLE your_table_name;
  • 若要查询最新日期数据,直接过滤分区即可,也可以通过子查询自动取最大分区:
SELECT * FROM your_table_name
WHERE (year, month, day) = (
  SELECT MAX(ARRAY[year, month, day]) FROM your_table_name
);
方案2:通过$path伪列匹配路径

Athena内置$path伪列,可返回每条数据对应的S3文件全路径,适配无显式Hive分区的场景:

  • 若已知最新文件的路径前缀,直接过滤即可:
SELECT * FROM your_table_name
WHERE "$path" LIKE 's3://your-bucket/your-data-path/20240520/%'; -- 替换为最新路径前缀
  • 若要自动匹配最新路径,可通过正则提取路径中的日期字段后取最大值:

以下示例适配路径格式为s3://bucket/data/yyyymmdd/xxx.parquet的场景,可根据自己的路径日期格式调整正则规则

WITH file_date_mapping AS (
  SELECT 
    *,
    regexp_extract("$path", 's3://your-bucket/your-data-path/([0-9]{8})/', 1) AS file_date
  FROM your_table_name
)
SELECT * FROM file_date_mapping
WHERE file_date = (SELECT MAX(file_date) FROM file_date_mapping);
方案3:直接指定单个最新文件查询

如果已经明确最新Parquet文件的完整S3路径,无需建表可直接查询:

SELECT * FROM parquet.`s3://your-bucket/your-data-path/20240520/latest_file.parquet`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:03