微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个设备和时间戳的最佳分区方法

如何解决多个设备和时间戳的最佳分区方法

在我的组织中,我们有多个设备每秒发送数据。数据在 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_idts,只有 ts 用于生成分区。

这是我的问题:

这种分区方法长期有效吗?目前,我们只有大约 150 台活动设备,但我们计划扩展到 1000 台甚至更多。考虑到查询模式是相同的(在某个时间获取某个设备的数据),按 device_id 然后按日期 (/devive_id/year=YYYY/month=MM/day=DD/file.csv) 分区更好吗?

解决方法

分区非常适合您提供的查询——它只需要在一个子目录中查找那一天的数据。

但是,如果您在所有时间(没有指定月/日)查询特定设备,那么效率将不高。

您需要决定什么会更常见:

  • 如果总是查询特定设备,则按设备分区,然后按日期
  • 如果总是查询特定的日期/月份,那么您当前的方法就可以了(可能在 Day 之后添加一个设备分区)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。