[英]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.