如何将 Json 和 Avro 格式事件发送到 Azure 事件中心并最终将它们引入 Azure 数据资源管理器表。使用 .Net (c#)

问题描述 投票:0回答:1

我的要求是使用 Azure 事件中心捕获 Json 和/或 Avro 格式的事件,并最终将这些事件提取到 ADX 中。也不想将这些事件捕获到 Blob 存储等中并在其之上使用事件网格选项。想要将这些事件直接捕获到 ADX 中。

在浏览了有关这些主题的多个文档和在线网站后,根据我的理解,以下是高级步骤,但是由于几个问题而无法完成此操作,因此请寻求帮助,看看是否有任何博客/视频用一个简单的例子端到端地展示了这个过程?

  1. 创建事件中心命名空间。
  2. 创建EventHub(主题)
  3. 在事件中心名称空间下的“架构注册表”下创建一个架构组(类型:Json/Avro)和架构。 (没有找到足够的关于如何定义 json 模式的详细信息)
  4. 使用.Net SDK(c#)我们可以验证事件并发送和接收事件。参考链接:https://learn.microsoft.com/en-us/azure/event-hubs/schema-registry-dotnet-send-receive-quickstart
  5. 在 ADX 数据库中创建一键摄取(事件中心连接)。 对于此步骤,尝试了多种选项,例如通过一键摄取创建全新表以及预先创建表和映射,但所有选项都不起作用,并且无法将事件捕获到表中。这确实需要更多关于如何配置表/映射以及如何创建事件中心连接等的详细信息。如何准确处理 Avro 和 JSON 格式的事件。

这是我正在使用的预创建表和映射的 KQL 脚本。

.create table test123 (
 RGUID: string,
 EnvironmentName: string, 
 MachineName: string,
 DateTimeUTC: long
)

.create table test123 ingestion avro mapping 'test123Mapping1' '[{"column":"RGUID","Properties":{"Field":"$.RGUID"}},{"column":"EnvironmentName","Properties":{"Field":"$.EnvironmentName"}},{"column":"MachineName","Properties":{"Field":"$.MachineName"}},{"column":"DateTimeUTC","Properties":{"Field":"$.DateTimeUTC"}}]'

谢谢

编辑-1: 从事件中心创建数据库连接时主要有 2 个问题。

  1. 按照下面的屏幕截图在数据库级别创建了数据库连接。连接创建成功,但事件被丢弃,错误代码为 BadRequest_InvalidBlob

EventHub DB Connection

  1. 我们还可以在表级别创建数据库连接。右键单击表格并选择“摄取数据”,这里我没有看到“AVRO”格式可用。

Table Level Ingest Data wizard

azure-eventhub azure-data-explorer adx
1个回答
0
投票

如果您已经知道如何创建表和摄取映射,则可以直接从 Azure 门户创建数据连接,而无需通过一键式向导:

创建事件中心数据连接

© www.soinside.com 2019 - 2024. All rights reserved.