对于 col_a 中的每个不同值,产生一个新的 table

For each distinct value in col_a, yield a new table

我在 S3 中有一个 Athena table 数据作为源 table,包含列 idnameevent。对于此 table 中的每个唯一 name 值,我想输出一个新的 table,其中所有行都对应于该 name 值,并保存到不同的存储桶在 S3。这将导致 n 个新文件存储在 S3 中,其中 n 也是源 table.

中唯一 name 值的数量

我已经尝试使用 PARTITION BY 和 CTAS 查询在 Lambda 中进行单个 Athena 查询,但似乎无法获得我想要的结果。好像AWS Glue可以达到我的预期效果,但是我在网上看到它比较贵,也许我可以使用Lambda获得我预期的结果。

如何存储一个新文件(JSON 格式,最好)包含与 S3 中每个唯一 name 对应的所有行?

我最好每天 运行 更新 name 存储的数据,但上面的问题是目前主要关心的问题。

当您编写 spark/glue 代码时,您需要使用名称列对数据进行分区。然而,这将导致具有以下格式的路径

S3://bucketname/folder/name=value/file.json

这应该为每个名称值提供一组单独的文件,但是如果您想单独访问它 table 您可能需要在抓取之前从密钥中删除 = 符号数据并通过 Athena

提供

如果您确实使用 lambda,则操作涉及遍历数据,类似于胶水所做的,并对数据进行分区

我想这完全取决于它需要处理的数据量。胶水,如果使用火花可能会有一点额外的启动时间。 Glue python shell 的启动时间相对较短