如何用AWS Wrangler从单日期列自动生成S3 Parquet的Hive式年月日报分区
用AWS Wrangler基于单个日期列生成Hive风格分层分区目录
要实现你需要的年/月/日分层Hive分区结构,不需要给DataFrame新增列,直接利用AWS Wrangler的partition_cols参数支持的日期格式化语法就能搞定。
核心修改点
把原来的partition_cols=['date']替换成按日期字段拆分的格式化表达式:partition_cols=['date:year', 'date:month', 'date:day']。
完整代码示例
import awswrangler as wr import pandas as pd # 构造DataFrame,先把字符串日期转成datetime类型(关键,确保Wrangler能正确解析) df = pd.DataFrame({ 'date': ['2022-08-01', '2022-08-02', '2022-08-03'], 'col2': ['A', 'A', 'B'] }) df['date'] = pd.to_datetime(df['date']) # 写入S3,指定分层分区规则 wr.s3.to_parquet( df=df, path='s3://bucket/prefix', dataset=True, partition_cols=['date:year', 'date:month', 'date:day'], database='default' )
效果说明
运行这段代码后,S3上会生成你期望的Hive风格分层目录:
prefix - year=2022 -- month=08 --- day=01 --- day=02 --- day=03
补充说明
- 必须确保
date列是pandas的datetime64类型,否则Wrangler无法识别并提取年/月/日字段。如果你的原始数据是字符串格式,一定要先做类型转换。 - 除了
year/month/day,还支持hour/minute等时间粒度的拆分,按需调整即可。
内容的提问来源于stack exchange,提问作者Ben L
相关产品推荐
相关产品推荐

