繁体   English   中英

在 Amazon S3 中组织小文件的最佳方式是什么?

[英]What's the best way to organize small files in Amazon S3?

我有一个 airflow 作业,每 5 分钟调用一个 API 端点(每天 24 x 12 次调用)。 API 响应是一个 JSON,其中包含六个项目 (~ 1KB)。 我将每个响应作为单独的文件存储在 Amazon S3 中。

当前的 s3 组织

s3://bucket/data/
                1/1/2021/ 
                        ---  288 .json files (one file per every 5 mins)
                1/2/2021/
                        -- 288 .json files

在这种方法中,s3 中有很多小文件。 我可以实施更好的方法来处理这个小文件问题吗?

一种选择是发送到 Amazon Kinesis Firehose stream而不是存储文件。 Kinesis Firehose Stream 可以按大小或时间对数据进行批处理,例如每 5 分钟或每 5 MB 将数据保存到一个文件中。

另一种选择是每天(或更频繁地)运行一个作业,将这些文件中的数据组合到一个文件中。 根据数据格式,这可以使用Amazon Athena完成。 根据您希望如何使用保存的数据,它还提供了在合并文件时更改数据格式的机会。 以后查询的最佳格式是Snappy 压缩的 Parquet 文件,Amazon Athena 可以快速且廉价地查询这些文件。

Atlassian 做的是后者——他们有一项工作是将白天收到的所有文件组合成每天的批处理文件。 参见:苏格拉底:Atlassian 的数据湖

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM