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

How to prevent doubling values on Stream analytics due to blob input

我们发现使用 blob 引用输入时流分析存在问题。重新启动流后,它会为连接到它的事物打印双精度值。我认为这是在重新启动期间有超过 1 个 blob 处于活动状态的问题。目前,我们从 ADLS 中结构为 Output/{date}/{time}/Output.json 的文件夹路径中提取文件,最终为 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 将其计为两个单独的事件)。这应该是不可能的,因为我们无法从设备发送具有相同时间戳的副本。

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