1

我是新的 AWS 胶水。我需要将动态框架中的每条记录写入 s3 中的自定义文件夹路径。例如


以下是目标 s3 路径:

<bucket>/parentfolder/<year>/<month>/<day>/<somegroupid>/<random_file_name>.json

在这里,'year', 'month', 'day', 'somegroupid'可作为每条记录中的列使用。

是否可以使用记录中的列值来决定 JSON 文件的写入路径?

4

1 回答 1

0

请参阅在 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 读取所有基础数​​据。

于 2021-02-16T08:26:50.050 回答