问:什么是 Amazon IoT Analytics?
Amazon IoT Analytics 是一项完全托管的 IoT 分析服务,可大规模收集、预处理、扩充、存储和分析 IoT 设备数据。IoT Analytics 可以执行简单的临时查询以及复杂的分析,以更简单的方式运行物联网分析来了解设备性能、预测设备故障和机器学习。它是专门为物联网设计的,可自动捕获和存储消息时间戳,从而简化时间序列分析。IoT Analytics 还可以使用 Amazon IoT 注册表利用设备特定的元数据(例如设备类型和位置)来扩充数据。Amazon IoT Analytics 将数据存储在经过物联网优化的数据存储中,因此您可以对大型数据集运行查询。借助 Amazon IoT Analytics,您还可以执行自定义编写的代码容器。Amazon IoT Analytics 自动执行在 Jupyter Notebook 或您自己的工具(例如 Matlab)中创建的自定义分析,以便按计划执行分析。
问:Amazon IoT Analytics 是如何工作的?
Amazon IoT Analytics 与 Amazon IoT Core 完全集成,因此很容易上手。首先,您定义一个通道并选择要收集的数据,以便仅存储和分析相关数据,例如传感器温度。设置通道后,您可以配置管道来处理数据。管道支持使用外部数据源和 Amazon Lambda 函数的转换(例如摄氏度到华氏度的转换)、条件语句、消息筛选和消息扩充。
在处理了管道中的数据之后,IoT Analytics 将其存储在经过物联网优化的数据存储中,然后进行分析。您可以使用内置的 SQL 查询引擎来查询数据,以回答具体业务问题。例如,您可能想知道队列中每个设备每月的活跃用户数。通过与 Amazon SageMaker 集成,IoT Analytics 支持更复杂的分析,例如贝叶斯推理和机器学习。
问:可以在 Amazon IoT Analytics 上执行我的自定义分析代码吗?
可以,您可以将自己的自定义分析打包到一个容器中,然后在 Amazon IoT Analytics 上执行。您可以将自定义代码容器导入容器数据集,并计划执行容器。
问:SQL 数据集与容器数据集有何不同?
SQL 数据集类似于 SQL 数据库中的实体化视图。实际上,您是通过应用 SQL 操作来创建 SQL 数据集的。可以通过指定触发器定期自动生成 SQL 数据集。
容器数据集使您可以自动运行分析工具并生成结果。容器数据集将以下内容汇集在一起:一个作为输入的 SQL 数据集、一个包含您的分析工具和所需库文件的 Docker 容器、输入和输出变量以及一个可选的时间表触发器。输入和输出变量指示可执行映像在哪里获取数据并存储结果。触发器可以在 SQL 数据集完成内容创建时或根据时间表表达式运行您的分析。容器数据集将自动运行分析工具,生成相关结果,然后保存。
问:什么是 DeltaTime 时段?
Delta 时段是一系列用户定义的、不重叠且连续的时间间隔。借助 Delta 时段,您可以使用自上次分析以来传输到数据存储的新数据创建数据集内容,并对这些新数据进行分析。要创建 Delta 时段,您可以在数据集的 queryAction 筛选条件部分中设置 DeltaTime。这样一来,您基本上可以筛选出在特定时段内到达的消息,因此不会将在先前时段内到达的消息中包含的数据计入两次。
问:如何按首选时间表在 Amazon IoT Analytics 上执行自定义代码容器?
您可以将自己的自定义分析代码打包到一个容器中,然后在 Amazon IoT Analytics 上执行。您可以通过 Amazon IoT Analytics 控制台或 API 创建容器数据集,方法是指定 SQL 数据集、自定义代码容器映像、输入和输出变量以及作为参数的可选时间表触发器,其中触发器可以是一个 SQL 数据集内容创建事件或一个时间表。容器数据集按您的首选时间表将 SQL 数据集的内容馈送到容器映像中提供的分析代码,并根据触发器自动执行映像,以生成见解。
问:数据存储和通道使用什么保留策略?
您可以选择在数据存储和通道上设置自己的数据保留策略。您可以选择任意天数的保留期。如果您没有选择任何保留期,则该服务将无限期保留您的数据。
问:Amazon IoT Analytics 支持什么类型的消息格式?
Amazon IoT Analytics 服务支持 JSON 和二进制格式(Binary JSON、协议缓冲区等)。如果消息是二进制格式,则管道的第一个活动必须是输出为有效 JSON 的 Lambda 活动。
问:可以从连接到管道的通道中重新处理数据吗?
可以,您可以使用 StartPipelineReprocessing 从连接到管道的通道中重新处理数据。如果要使用另一个管道重新处理通道数据,则需要将管道连接到相应的通道。
问:如何使用 Ingestion API 将数据发送到 Amazon IoT Analytics?
您可以使用 BatchPutMessage API 将数据从 Amazon S3、Amazon Kinesis 或任何其他数据源发送到 Amazon IoT Analytics。您可以在 Lambda 函数或任何其他脚本中使用此 API 将数据发送到 Amazon IoT Analytics。有关更多信息,请参阅“将数据从 S3 发送到 IoT Analytics”以及“将数据从 Kinesis 发送到 IoT Analytics”。
问:可以在通道中预览消息吗?
可以,您可以使用 SampleChannelData API 预览消息。此 API 会从您的通道的所有数据中抽取最多十条消息作为样本。
问:可以模拟管道活动吗?
可以,您可以使用 RunPipelineActivity API 或控制台来模拟管道活动。此 API 采用示例数据列表(来自 SampleChannelData 或手动提供)以模拟活动,并预览结果。
问:Amazon IoT Analytics 和 Amazon Kinesis Analytics 之间有何不同?
Amazon IoT Analytics 是专门为物联网设计的,可自动捕获和存储消息时间戳,从而简化时间序列分析。IoT Analytics 还可以使用 Amazon IoT 注册表和其他公共数据源在数据中包含设备特定的元数据,例如设备类型和位置。IoT Analytics 将设备数据存储在经过物联网优化的数据存储中,因此您可以对大型数据集运行查询。
Amazon Kinesis Analytics 是一种通用工具,设计用于实时轻松处理来自 IoT 设备以及其他数据源的流数据。
表 1:Amazon IoT Analytics 与Kinesis Analytics 的功能对比
功能 | Amazon IoT Analytics |
Amazon Kinesis Analytics |
时间序列数据存储 | X | |
按消息时间戳和设备 ID 自动执行数据分区 | X | |
设备特定的数据扩充 | X | |
对大型数据集运行查询 | X | |
流式分析 | X | |
实时处理 | 分钟或秒级延迟 | 秒或毫秒级延迟 |
分时段操作 | X | |
解析非结构化数据并自动创建架构 | JSON 和 CSV | JSON 和 CSV |
问:何时应使用 Amazon IoT Analytics?何时应使用 Amazon Kinesis Analytics?
您可以使用 Amazon IoT Analytics 进行 IoT 分析。一些使用案例包括了解长期设备性能、业务报告和临时分析以及预测性队列维护。 IoT Analytics 最适合这些使用案例,因为它可以长期收集和准备来自设备的数据,并将其存储在经过物联网优化的数据存储中。 IoT Analytics 还可以使用 Amazon IoT 注册表和其他公共数据源在数据中包含设备特定的元数据,例如设备类型和位置。
但是,如果您需要针对设备监控等使用案例实时分析 IoT 数据,则可以使用 Amazon Kinesis Analytics。
表 2:Amazon IoT Analytics 与Kinesis Analytics 使用案例
使用案例 |
Amazon IoT Analytics | Amazon Kinesis Analytics |
了解长期设备性能特征 | 可以。 使用 Amazon IoT 注册表和其他公共数据源在 IoT 数据中包含 IoT 特定的元数据,例如设备类型和位置。例如,葡萄园经营者需要利用葡萄园的预期降雨来扩充湿度传感器数据,以便他们确定何时浇水。 | 不可以。适用于实时流式分析。 |
有关物联网数据的业务报告和临时分析 | 可以。收集、处理和存储 IoT 数据,并与 Amazon Web Services QuickSight 集成以构建控制面板和报告,或使用内置的 SQL 查询引擎进行临时查询。 例如,汇总整个队列的传感器故障,每周报告一次队列性能。 | 不可以。适用于对 IoT 数据执行流式查询,例如在传感器发生故障时生成警报。 |
预测性队列维护 | 可以。收集、处理和存储 IoT 数据,并使用预构建的模板来构建和部署预测模型。 例如,预测 HVAC 系统何时在连接的车辆上发生故障,以便可以为车辆重新规划路线并加快对接速度,防止装运损失。 | 不可以。预测性维护需要对长期数据进行历史分析,以便构建模型。 |
实时设备监控 | 不可以。 | 可以。Kinesis Analytics 可以持续聚合某个时段内的数据,检测异常情况并采取发送警报等操作。例如,Kinesis Analytics 可以每 5 分钟计算一次工业设备中阀门温度的 10 秒滚动平均值,并检测温度何时超过某些预设阈值。然后,它可以向控制系统发出警报以自动关闭机器,从而避免发生事故。 |
问:何时应结合使用 Amazon IoT Analytics 和 Amazon Kinesis?
当您既需要历史分析又需要实时分析时,可以结合使用 Amazon IoT Analytics 和 Amazon Kinesis。例如,使用 Kinesis Analytics 计算工业设备中阀门温度的 10 秒滚动平均值,以检测温度何时超过特定阈值。然后,Kinesis Analytics 可以向控制系统发出警报以自动关闭机器,从而避免发生事故。接着使用 Kinesis Streams 将数据发送给 IoT Analytics。您可以使用 IoT Analytics 了解趋势并预测何时应更换或维修阀门。
问:在处理 IoT 数据时,何时应使用 Amazon IoT Analytics、Amazon Kinesis Streams、Amazon Kinesis Analytics 和 Amazon Kinesis Firehose?
客户可以使用 Amazon Lambda 将数据从 Amazon Kinesis Streams 发送到 Amazon IoT 数据通道,然后再发送到 Amazon IoT Analytics。
Amazon Kinesis Analytics 设计用于流式分析,而 IoT Analytics 设计用于静态数据分析。同时需要实时和物联网分析的客户可以结合使用 Kinesis Analytics 和 IoT Analytics。
Amazon Kinesis Firehose 可让您以最简单的方式将流数据加载到 Amazon Web Services 数据存储 Amazon S3、Amazon Redshift 和 Amazon Elasticsearch Service,借助现有的商业智能工具实现近乎实时的分析。IoT Analytics 不支持将 Kinesis Firehose 用作数据源。