AWS Glue/Athena:组合许多小型镶木地板文件以提高性能

问题描述 投票:0回答:1

我有一个用例如下:

物联网设备正在将许多小文件上传到 AWS S3 输入存储桶中。上传后,每个文件都会由 AWS Lambda 函数进行处理,以解码数据并根据上传的 IoT 日志文件写入 parquet 输出文件。

parquet 文件被写入输出 S3 存储桶,该存储桶用作我的数据湖。输出 S3 存储桶由 AWS Glue 抓取并通过 AWS Athena 查询。

我的输出S3桶的结构如下:

s3://outputbucket/deviceid/tablename/fileid.parquet

请注意,我故意没有分区,因为这在我的用例中是不可能的。

我的挑战是这样的:

由于逐个文件的处理,我在数据湖中获得了大量的小 Parquet 文件(例如数百万个 5-100 kb 文件),从而降低了 Athena 的性能。

我想部署一个无服务器 AWS 服务,它将以简单的方式按需将我的小 parquet 文件“连接/组合”为更大的 parquet 文件。生成的较大 parquet 文件应进行压缩等。例如,单个表文件夹可能包含跨 10K 文件的 1 GB 数据 - 并且服务/作业应“转换”此文件夹以包含跨 10 个文件的 1 GB 数据。

同时,我希望确保这些组合文件保留在我的输出 S3 存储桶中(而不是将它们放入单独的 S3 存储桶中),因为我理想情况下希望将“组合”数据与新传入数据一起查询来自我现有的 Lambda 函数。

这可以通过例如AWS Glue、AWS Athena 或其他解决方案?

amazon-web-services aws-glue parquet amazon-athena
1个回答
0
投票

抱歉,我不是 AWS 专家。通常我无法理解他们的文档...... 然而,也许您可能会对 S3 selcet 感兴趣: https://docs.aws.amazon.com/AmazonS3/latest/userguide/selecting-content-from-objects.html

使用此功能,您可以从 csv、parquet 和 json 文件中选择列。我希望它也可以跨多个文件工作。希望对您有所帮助并祝您好运!

© www.soinside.com 2019 - 2024. All rights reserved.