如何防止由于 blob 输入而导致流分析的值加倍

Posted

技术标签:

【中文标题】如何防止由于 blob 输入而导致流分析的值加倍【英文标题】:How to prevent doubling values on Stream analytics due to blob input 【发布时间】:2021-04-16 18:00:58 【问题描述】:

我们在使用 blob 引用输入时发现流分析存在问题。重新启动流后,它会为加入它的事物打印双精度值。我认为这是在重新启动期间有超过 1 个 blob 处于活动状态的问题。目前,我们从结构为 Output/date/time/Output.json 的 ADLS 中的文件夹路径中提取文件,最终为 Output/2021/04/16/01/25/Output.json。这些文件具有与流中的数据匹配的键:

    IoTData
LEFT JOIN kauiotblobref kio
ON kio.ParentID = IoTData.ConnectionString

我认为这没有任何问题,但这些文件实际上是由一个 azure 函数每分钟每分钟创建的。因此,在流分析开始时,它可能会抓取最后一个以及随后创建的那个。 (这是我的猜测,但我不确定我们将如何解决这个问题)。

这是该问题在 powerBI 中的视觉效果:

Peak

Trough

在查看它所捕获的设备的 cosmosDB 时,这很容易解释,有两个条目具有相同的值、assetID、时间戳、不同的 recordID(只是意味着 cosmosDB 将其计为两个单独的事件)。这是不可能的,因为我们无法从设备发送具有相同时间戳的副本。

【问题讨论】:

【参考方案1】:

这似乎是流分析中 blob 存储的一个核心问题,因为传统上它需要超过 1 分钟才能启动。我发现解决的最佳方法是在开始流备份之前停止相应的功能。努力通过 CI/CD 管道实现自动化,这无论如何都是编辑流的好习惯。

【讨论】:

以上是关于如何防止由于 blob 输入而导致流分析的值加倍的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Azure 流分析和 Blob 存储输入

具有 Blob 存储输入的流分析作业未连续运行

前端防扒代码片段

前端防扒代码片段

前端防扒代码片段

前端防扒代码片段