【Azure Event Hub】Event Hub的Process Data页面无法通过JSON格式预览数据

Hub,Event ,Data,Process · 浏览次数 : 83

小编点评

## Problem Solution The issue arises because the JSON format is not recognized by the Event Hub Process Data page due to a mismatch between the format specified in the input and the format expected by the page. Here's a breakdown of the problem and solutions: **Problem:** * When using JSON preview (View in JSON), the page displays an error message. * The error message indicates that no data was found for preview, and the input format is not supported. **Solutions:** 1. **Check the data source:** * Ensure that the input source is configured with the correct serialization format for JSON data. * Verify if there are any encoding issues in the input data. * Check the data format being sent to the Event Hub from the source system. 2. **Inspect the input:** * Use alternative methods like CSV export or Service Bus Explorer to obtain the JSON data. * Verify that the obtained JSON format is identical to the one used for sending. * Analyze the JSON string to ensure it matches the expected format. 3. **Modify data content:** * If the format is consistent, modify the data content to match the expected JSON format. * This may involve encoding specific fields or removing any invalid characters. 4. **Use appropriate SDK:** * For the process data page, ensure that the SDK is configured to handle JSON data correctly. * If using an SDK, verify that it is parsing the JSON data according to the expected format. 5. **Refer to documentation:** * Consult the Azure Event Hub documentation for specific guidance on handling JSON data with different SDKs. * Refer to the Service Bus Explorer documentation for troubleshooting JSON parsing issues. **Additional tips:** * Ensure that the JSON data is clean and free of errors. * Use a tool like a JSON formatter to visually inspect the JSON data. * Check the Event Hub logs for any related errors or warnings. By following these steps and analyzing the error message and data source configuration, you should be able to identify and resolve the JSON format issue affecting the preview functionality.

正文

问题描述

在Event Hub的门户页面中,可以通过Process Data页面查看Event Hub中的数据,但是当使用JSON格式预览时(View in JSON),却出现错误。

消息一: No data was found for preview from 'test01'. Make sure the input has recently received data and the correct format of those events has been selected. [SessionID: 6b15d63464bf41f9b6e6c758f58a26ef 

消息二:Source '<unknown_location>' had 1 occurrences of kind 'InputDeserializerError.InvalidData' between processing times '2023-07-24T06:24:42.5057556Z' and '2023-07-24T06:24:42.5057556Z'. Could not deserialize the input event(s) from resource 'Partition: [0], Offset: [0], SequenceNumber: [0]' as Json. Some possible reasons: 1) Malformed events 2) Input source configured with incorrect serialization format

 

只是,在Event Hub中是存有数据的。如下图左边的Incoming Message中,有98条数据,但是在右边的Query页面中,却无法正确显示。

 

问题解答

在错误消息二中,出现了“ Input source configured with incorrect serialization format ”指明了数据解析为JSON过程中出现了不正确的序列化格式。这里就很明确的说明了无数据显示的原因是数据格式错误引起。 为了进一步调查这个问题,就需要通过其他方式获取出消息的内容,然后检查为什么它不是一个正确的JSON格式。

方式一:在Process Data页面中,选择 View by CSV - comma(,) 可以看见内容,但是发现格式很不一致,无法准确判断。

方式二:为了准确的获取到Event Hub中的数据,可以使用Azure Event Hub官方推荐的一个工具 Service Bus Explorer(下载地址:https://sourceforge.net/projects/service-bus-explorer.mirror/)来获取Event Hub中的数据。

操作动画演示:

在上图的工具中,直接查看到JSON的格式中,存在两个 Test/test, 虽然它们的首字母分别为大小写。

但是从测试的结果证明: Event Hub Process Data页面不识别大小写。所以在进行格式转换的时候抛出了 “InputDeserializerError.InvalidData : Input source configured with incorrect serialization format ”

 

最后确认

由于Event Hub的Process Data页面使用的是Azure中另一个服务ASA(流分析)来处理数据,在处理时识别不了有大小写不敏感的JSON字符串。由于ASA是大小写不敏感的流处理工具,所以在转换JSON时会忽略大小写,如果有相同的字段会解析失败。

所以,如果要查看数据,可以修改发送到Event Hub中的数据内容,或者通过Service Bus Explorer工具,及其他使用SDK自行编写的消费端代码。

 

参考资料

Service  Bus Explorer : https://sourceforge.net/projects/service-bus-explorer.mirror/

Use Service Bus Explorer to run data operations on Service Bus : https://learn.microsoft.com/en-us/azure/service-bus-messaging/explorer

 

 

 

 

 

 

 

 

与【Azure Event Hub】Event Hub的Process Data页面无法通过JSON格式预览数据相似的内容:

【Azure Event Hub】Event Hub的Process Data页面无法通过JSON格式预览数据

问题描述 在Event Hub的门户页面中,可以通过Process Data页面查看Event Hub中的数据,但是当使用JSON格式预览时(View in JSON),却出现错误。 消息一: No data was found for preview from 'test01'. Make sur

【Azure Event Hub】自定义告警(Alert Rule)用来提示Event Hub的消息incoming(生产)与outgoing(消费)的异常情况

问题描述 在使用Azure Service Bus的时候,我们可以根据Queue中目前存在的消息数来判断当前消息是否有积压的情况。 但是,在Event Hub中,因为所有消息都会被存留到预先设定的保留时间(默认是7天), 所以无法通过消息数来判断当前的消息是否有积压或者是有多余重复消费。 当消费端出

【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能

问题描述 Azure Event Hub支持 kafka,所以为了测试消息生产者所在环境与Azure Event Hub之间发送消息的性能如何,特别使用 kafka 官方测试生产者,消费者的性能工具 : kafka-producer-perf-test.bat kafka-consumer-perf

【Azure 事件中心】Event Hubs如何获取其中存放的历史消息

问题描述 使用Azure Event Hub服务,除了正常的生产,消费消息以外,如果想拿到Event Hub中存储的历史消息?有什么方法呢? 问题解答 获取 Event Hubs 存储的历史消息,首先需要确保消息进入Event Hub的时间处于保留期限(Retention Days)内,因为超过这个

【Azure 事件中心】使用Apache Flink 连接 Event Hubs 出错 Kafka error: No resolvable bootstrap urls

问题描述 参考Github上 Event Hub的示例代码(Using Apache Flink with Event Hubs for Apache Kafka Ecosystems : https://github.com/Azure/azure-event-hubs-for-kafka/tre

【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存

问题描述 在使用Azure Event Hub的SDK时候,常规情况下,发现示例代码中并没有SDK内部的日志输出。因为在Java项目中,没有添加 SLF4J 依赖,已致于在启动时候有如下提示: SLF4J: Failed to load class "org.slf4j.impl.StaticLog

【Azure 事件中心】如何查看Event Hub的生产者或者是消费者端的IP地址呢?

问题描述 哪些客户端 IP 正在向/从Azure Event Hub发送/接收事件?如何来查看Event Hub的生产者端,消费者端的IP地址呢? 问题解答 如果需要查看Event Hub 服务端的日志,可以在Azure门户上开启诊断日志来查看。默认情况下,我们并不能看见Event Hub的生产者,

【Azure 事件中心】Azure Event Hub中的数据能不能存储大于7天呢?如果7天之后是不是会自动删除呢?

问题描述 Event Hub中有个retention的设置为7天,有没有办法增大这个Retention的时间? 如果没办法,是不是超过7天的数据就会被删除? 问题解答 因为Azure Event Hub(事件中心)是一个实时事件流引擎,其设计意图并不是用于代替数据库以及/或者用作无限期保存的事件流的

【Azure 事件中心】Event Hub服务中的度量值指标介绍

问题描述 Event Hub服务中的度量值指标解说 1)request和message的区别 2)capture backlog 和 capture message 怎么理解 3)quota exceed error, 哪里可以知道这个quota 4)size 是指的存储大小 5) 为EventHu

【Azure 应用服务】Azure Function Python函数中,如何获取Event Hub Trigger的消息Event所属于的PartitionID呢?

问题描述 在通过Azure Function消费Event Hub中的消息时,我们从Function 的 Trigger Details 日志中,可以获得当前Funciton中处理的消息是哪一个分区(PartitionID), 偏移量Offset,序列号SequenceNumber 等信息。 但是在