首页 > 解决方案 > 如何设计一个 AWS IoT Analytics Pipeline,每个设备都有单独的数据集?

问题描述

我有一个从传感器获取数据并将这些数据推送到 AWS IoT Core 主题的移动应用程序。我想将此数据中继到 AWS IoT Analytics,然后使用我自己的机器学习代码进行分析 - 使用容器数据集。重要的是要确保device_id在 30 分钟的时间窗口内对事件进行隔离、批处理和分析。在我的例子中,只有一起分析由同一 device_id 生成的一组事件才有意义。事件负载已包含唯一的 device_id 属性。想到的第一个解决方案是Channel -> Pipeline -> DataStore -> SQL DataSet -> Container Data Set为每个移动客户端单独设置。视觉描绘如下: AWS IoT 分析架构 1 鉴于设备的数量是 N,这个架构的问题是我需要有 N 个通道,N 个实际上相同的管道,N 个存储相同类型/模式的数据存储,最后是 2*N 个数据集。因此,如果我有 50.000 台设备,那么资源的数量是巨大的。这让我意识到这不是一个好的解决方案。我想到的下一个想法是所有设备只有一个 Channel、一个 Pipeline 和一个 Datastore,并且每个设备只有不同的 SQL 数据集和不同的容器数据集。看起来像这样: AWS IoT 分析架构 这种架构现在感觉好多了,但如果我有 50.000 台设备,我仍然需要 100.000 个不同的数据集。默认的 AWS 限制是每个账户 100 个数据集。当然,我可以请求增加限制,但如果默认限制是 100 个数据集,那么我想知道请求增加限制是否有意义,即默认限制的 x1000 倍?这两种架构中的任何一种应该如何使用 AWS IoT Analytics 还是我遗漏了什么?

标签: amazon-web-servicesarchitecturepipelineaws-iotaws-iot-analytics

解决方案


我在AWS 论坛上发布了同样的问题,并从在那里工作的工程师那里得到了有用的回答。我在这里为那些可能像我一样有类似架构要求的人发布他的答案:

我不认为每个用户的数据集是建模的正确方法。我们推荐数据架构的方式是使用单个数据集(或者可能是少数以设备类型、国家或其他更高级别分组为中心的数据集)并使用 SQL 查询来提取感兴趣时间段的数据, 在你的情况下是 30 分钟。接下来,您触发一个容器数据集,该数据集使用该数据集并准备每个用户所需的最终分析。笔记本基本上会遍历每个唯一的客户 ID(您可能已经能够在 SQL 中进行分组和排序以使其更快)并在将数据发送到需要的地方之前执行您需要的分析。


推荐阅读