如何解决多个设备和时间戳的最佳分区方法
在我的组织中,我们有多个设备每秒发送数据。数据在 AWS S3 中像这样 /year=YYYY/month=MM/day=DD/file.csv
进行处理和分区。
我们使用 AWS Athena 运行如下查询:SELECT col1,col2,coln FROM data WHERE year = 'YYYY' AND month = 'MM' and DAY = 'dd' AND device_id = 123
以从一台设备检索一天中某个时间的数据。有时我们还需要从多个设备 (device_id IN (...)
) 和不同时间获取数据。请注意,数据集中存在列 device_id
和 ts
,只有 ts
用于生成分区。
这是我的问题:
这种分区方法长期有效吗?目前,我们只有大约 150 台活动设备,但我们计划扩展到 1000 台甚至更多。考虑到查询模式是相同的(在某个时间获取某个设备的数据),按 device_id 然后按日期 (/devive_id/year=YYYY/month=MM/day=DD/file.csv
) 分区更好吗?
解决方法
分区非常适合您提供的查询——它只需要在一个子目录中查找那一天的数据。
但是,如果您在所有时间(没有指定月/日)查询特定设备,那么效率将不高。
您需要决定什么会更常见:
- 如果总是查询特定设备,则按设备分区,然后按日期
- 如果总是查询特定的日期/月份,那么您当前的方法就可以了(可能在 Day 之后添加一个设备分区)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。