【问题标题】:Azure Stream Analytics Event Hub output - received invalid objectAzure 流分析事件中心输出 - 收到无效对象
【发布时间】:2019-01-20 03:30:42
【问题描述】:

使用 ASA 作业,输入作为 IoT 中心,事件中心作为输出,一个流媒体单元和每秒 36 条消息。

ASA 将多个对象作为单个字符串发送到事件中心。

例如- 当我通过上传示例 IoT Hub 输入 json 文件测试 ASA 作业时,在单行中获取以下对象(输出中每行一个对象),这是预期的 - “{“assetbarcode”:“MobileGW153353803144884Asset”,“sensorruleid”:1159, "groupid":681}"

但是当启动 ASA 作业并启动 C# 事件中心接收器时,将多个对象作为单个字符串 - "{"assetbarcode":"MobileGW153353803144884Asset","sensorruleid":1159,"groupid":681} {"assetbarcode":"MobileGW153353803144884Asset","sensorruleid":1159,"groupid":681} {"assetbarcode":"MobileGW153353803144884Asset","sensorruleid":1159,"groupid":681}"

所以它无法反序列化,因为它是无效的 json。字符串不是数组或逗号分隔的对象。

引用的 C# 接收器 - https://github.com/Azure/azure-event-hubs/blob/master/samples/DotNet/Microsoft.Azure.EventHubs/SampleEphReceiver/SimpleEventProcessor.cs

【问题讨论】:

  • 您所指的那个 SimpleEventProcessor not 反序列化 json 字符串。因此,它将 json 数据显示为单个字符串。这里没有错。
  • 但它是无效的 json 字符串,期望一个消息/对象作为 eventData 但我在单个 json 字符串中获取多个对象。

标签: azure-eventhub azure-stream-analytics


【解决方案1】:

如果您将输出配置为行分隔,则该输出是预期的。要反序列化,您可以逐行读取并反序列化每一行或让 JObjects 的反序列化序列。

如果您更喜欢 json 数组,请选择数组。 This page 有更多详细信息。请注意,如果作业在关闭文件之前重新启动,则文件可能缺少关闭“]”

【讨论】:

  • 我有文件丢失关闭 ] 但无论我是否重新启动作业似乎都经常发生,使得数组格式毫无用处。
猜你喜欢
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多