为 Azure IoT Edge 设备部署 Azure Stream Analytics 服务
在前面的两篇文章《Azure IoT Edge on Windows 10 IoT Core》和《Azure IoT Edge on Raspberry Pi 3 with Raspbian》中,我们学习了如何在Windows 10和Linux系统上进行Docker的部署和Python、Iotedgectl工具的安装,同时,在Azure Portal上完成了IoT Edge Device的创建、Azure IoT Edge Module的部署与运行。而在实际的生产环境中,IoT 设备可以生成大量的数据。 为了减少上传的数据量或降低控制策略的延时,有时必须在设备端对数据进行实时分析或处理。Azure Stream Analytics 服务就是很好的解决方案之一,用户可以从Azure Portal中创建Azure Stream Analytics 服务,然后在 Azure IoTHub 中将其设置为 IoT Edge Module 并部署到Azure IoT Edge设备上。本文将演示如何创建Azure Stream Analytics Job, 并将其部署到 IoT Edge 设备上。
1. 创建存储账户
首先,在 Azure 门户中,转到“New”,在搜索框输入“Storage”,选择“Storage account - Blob,file, table, queue”。
然后,在“Create Storage Account ”中,输入存储帐户的名称,选择存储IoTHub的同一位置(这里为East Asia),然后选择“Create”。 请记下该名称供稍后使用。
接着,转到刚刚创建的存储帐户,选择“Blob Service”。为Azure Stream Analytics 模块创建一个新容器用于存储数据,将访问级别设置为“Container”,选择“确定”。
2. 创建Azure Stream Analytics Job
首先,在 Azure 门户中,转到“Create” > “Internet of Things”,然后选择“Stream Analytics Job”。
然后,在“New Stream Analytics Job”中执行以下操作:在“Job name”框中键入作业名称;在”Hosting Environment”下,选择“Edge”;在剩余字段中使用默认值。
接着,在所创建作业中的“Job Topology”下,依次选择“Input”-“Add”。在“Input alias”框中,输入 temperature。在“Source Type”框中,选择“Data stream”。在剩余字段中使用默认值。
接下来,在所创建作业中的“Job Topology”下,依次选择“Output”-“Add”, 在“输出别名”框中,键入 alert,在剩余字段中使用默认值。之后选择“创建” 。
最后,在在所创建作业中的“Job Topology”下,依次选择“Query”-“Add”, 加入以下SQL语句并保存
SELECT
'reset' AS command
INTO
alert
FROM
temperature TIMESTAMP BY timeCreated
GROUP BY TumblingWindow(second,30)
HAVING Avg(machine.temperature) > 70
3. 部署Stream Analytics Job
首先,在 Azure Portal 的 IoTHub页面内,转到“IoT Edge”并打开 IoT Edge 设备的详细信息页。
选择“Set Modules”,并确保已经按照之前文章中的步骤添加了tempSensor模块,因为这里的Azure Stream Analytics模块是针对tempSensor模块产生的数据来进行实时分析的。
在“Add Modules”页面,选择“Import Azure Stream Analytics IoT Edge Module”,
在接下来的Edge Deployment页面,选择之前创建好的Stream Analytics - Edge Job,注意,这里要选择之前第一部分已经创建好的存储账户和Container,点击保存,如下图所示。
之后,将一下代码复制到Routes,将{moduleName}替换为复制的模块名称:
{
"routes": {
"telemetryToCloud": "FROM /messages/modules/tempSensor/* INTO $upstream",
"alertsToCloud": "FROM /messages/modules/{moduleName}/* INTO $upstream",
"alertsToReset": "FROM /messages/modules/{moduleName}/* INTO BrokeredEndpoint(\"/modules/tempSensor/inputs/control\")",
"telemetryToAsa": "FROM /messages/modules/tempSensor/* INTO BrokeredEndpoint(\"/modules/{moduleName}/inputs/temperature\")"
}
}
选择下一步,然后Submit。返回到“设备详细信息”页,并选择“刷新”。应会看到新的流分析模块已经在列表中,但是状态还是处于Pending Deployment。
一段时间以后,等该Module部署到设备以后,刷新列表,可以发现,EdgeASA已经处于running状态,如下图所示。
回到Putty工具,利用“docker logs -f {moduleName} ”指令(其中,{moduleName} 用刚刚部署的流分析模块的名称代替),就可以查看流分析的日志信息,如下图所示。
至此,我们完成了存储账户的创建、Azure Stream Analytics Job的创建和Azure Stream Analytics Job的部署与运行。
参考链接:
1. Azure IoT Edge on Windows 10 IoT Core
2. Azure IoT Edge on Raspberry Pi 3 with Raspbian
3. Deploy Azure Stream Analytics as an IoT Edge module - preview
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2011-12-27 Windows Phone SDK 7.1 中文版本发布
2008-12-27 承载辉煌历史 畅想无线未来