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