【问题标题】:How to design an AWS IoT Analytics Pipeline that will have separate data-set for each device?如何设计一个 AWS IoT Analytics Pipeline,每个设备都有单独的数据集?
【发布时间】:2020-06-29 00:55:51
【问题描述】:

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

【问题讨论】:

标签: amazon-web-services architecture pipeline aws-iot aws-iot-analytics


【解决方案1】:

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

我不认为每个用户的数据集是建模的正确方法。我们推荐数据架构的方式是使用单个数据集(或者可能是少数以设备类型、国家或其他更高级别分组为中心的数据集)并使用 SQL 查询来提取感兴趣时间段的数据, 在你的情况下是 30 分钟。接下来,您触发一个容器数据集,该数据集使用该数据集并准备每个用户所需的最终分析。 笔记本基本上会遍历每个唯一的客户 ID(您可能已经能够在 SQL 中进行分组和排序以使其更快)并在将数据发送到需要的地方之前执行您需要的分析。您可以使用 1 个容器数据集对每个客户进行初始数据处理,并使用第二个容器数据集进行 ML 训练,具体取决于场景的复杂性,但在许多情况下,单个容器数据集就可以了 - 我使用过这种方法训练数以万计的单独“设备”,因此这也可能适用于您的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2016-10-01
    • 2019-02-08
    相关资源
    最近更新 更多