我是新的 AWS 胶水。我需要将动态框架中的每条记录写入 s3 中的自定义文件夹路径。例如
以下是目标 s3 路径:
<bucket>/parentfolder/<year>/<month>/<day>/<somegroupid>/<random_file_name>.json
在这里,'year', 'month', 'day', 'somegroupid'
可作为每条记录中的列使用。
是否可以使用记录中的列值来决定 JSON 文件的写入路径?
我是新的 AWS 胶水。我需要将动态框架中的每条记录写入 s3 中的自定义文件夹路径。例如
以下是目标 s3 路径:
<bucket>/parentfolder/<year>/<month>/<day>/<somegroupid>/<random_file_name>.json
在这里,'year', 'month', 'day', 'somegroupid'
可作为每条记录中的列使用。
是否可以使用记录中的列值来决定 JSON 文件的写入路径?
请参阅在 AWS Glue 中管理 ETL 输出的分区 - 编写分区
glue_context.write_dynamic_frame.from_options(
frame = projectedEvents,
connection_type = "s3",
connection_options = {"path": "$outpath", "partitionKeys": ["year", "month", "day", "somegroupid"]},
format = "parquet")
这会给你:s3://my_bucket/logs/year=2018/month=01/day=23/
不幸的是,似乎没有办法摆脱它,field=value
因为在某些情况下它可能很有价值:
爬虫不仅推断文件类型和架构,还在填充 AWS Glue 数据目录时自动识别数据集的分区结构。生成的分区列可用于在 AWS Glue ETL 作业或 Amazon Athena 等查询引擎中进行查询。
Amazon Athena、Amazon Redshift Spectrum 和现在的 AWS Glue 等系统可以使用这些分区按分区值过滤数据,而无需从 Amazon S3 读取所有基础数据。