azure - 将分析流式传输到事件中心 - 意外串联事件

标签 azure azure-eventhub azure-stream-analytics

我有一个流分析作业,它使用 avro 消息的事件中心(我们将其称为 RawEvents),转换/扁平化消息并将它们发送到单独的事件中心(我们将其称为 FormattedEvents)。

RawEvents 中的每个 EventData 实例都包含一个顶级 json 对象,该对象具有一组更详细的事件。这是一个人为的示例:

[{ "Events": [{ "dataOne": 123.0, "dataTwo": 234.0, "subEventCode": 3, "dateTimeLocal": 1482170771, "dateTimeUTC": 1482192371 }, { "dataOne": 456.0, "dataTwo": 789.0, "subEventCode": 20, "dateTimeLocal": 1482170771, "dateTimeUTC": 1482192371 }], "messageType": "myDeviceType-Events", "deviceID": "myDevice", }]

流分析作业会展平结果并解包 subEventCode,它是一个位掩码。结果看起来像这样:

{"messagetype":"myDeviceType-Event","deviceid":"myDevice",eventid:1,"dataone":123,"datatwo":234,"subeventcode":6,"flag1":0,"flag2":1,"flag3":1,"flag4":0,"flag5":0,"flag6":0,"flag7":0,"flag8":0,"flag9":0,"flag10":0,"flag11":0,"flag12":0,"flag13":0,"flag14":0,"flag15":0,"flag16":0,"eventepochlocal":"2016-12-06T17:33:11.0000000Z","eventepochutc":"2016-12-06T23:33:11.0000000Z"} {"messagetype":"myDeviceType-Event","deviceid":"myDevice",eventid:2,"dataone":456,"datatwo":789,"subeventcode":8,"flag1":0,"flag2":0,"flag3":0,"flag4":1,"flag5":0,"flag6":0,"flag7":0,"flag8":0,"flag9":0,"flag10":0,"flag11":0,"flag12":0,"flag13":0,"flag14":0,"flag15":0,"flag16":0,"eventepochlocal":"2016-12-06T17:33:11.0000000Z","eventepochutc":"2016-12-06T23:33:11.0000000Z"}

当我从 FormattedEvents 事件中心提取消息时,我希望看到两个 EventData 实例。我得到的是一个 EventData,在同一条消息中包含两个“扁平化”事件。当以 Blob 存储或数据湖为目标时,这是预期的行为,但当以事件中心为目标时,这是令人惊讶的。我的期望是类似于服务总线的行为。

这是预期的行为吗?如果是的话,是否有一个配置选项可以强制执行该行为?

最佳答案

是的,这是目前的预期行为。目的是提高尝试在 EventHub 消息 (EventData) 中发送尽可能多的事件的吞吐量。

不幸的是,截至目前还没有配置选项可以覆盖此行为。一种可能值得尝试的方法是利用输出分区键的概念来实现 super 独特的功能(即将此列添加到您的查询中 - GetMetadataPropertyValue(ehInput, "EventId") as outputpk )。现在,在输出 EventHub 的 ASA 设置中将“outputpk”指定为 PartitionKey。

请告诉我这是否有帮助。

干杯 切坦

关于azure - 将分析流式传输到事件中心 - 意外串联事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42213418/

相关文章:

要检查的 Azure 事件网格

azure - 在流分析查询中将字符串转换为日期时间

azure - 如何使用 azure 流分析计算每行的百分比?

azure - 未找到事件 - Azure 事件中心

sql-server - 同一服务器上的 Azure SQL 数据库会相互影响性能

c# - 如何让 IOptionsMonitor<T> 从 Azure Windows Server VM 上托管的正在运行的 .NET Core 2.2 应用程序获取最新配置值?

azure - 从 Azure 中的虚拟机连接到集群服务

azure - Azure Devops for Function App 中的交换槽任务

azure - 两个 Azure 事件中心使用者会收到相同的通知吗?

c# - 带有 eventData 对象的 EventHubTrigger C# 不起作用