【发布时间】:2020-03-02 16:54:03
【问题描述】:
我在这个主题上找不到太多文档,但我正在将一个对象序列化到 Avro,然后发送到 Azure EventHub。我 认为 Avro 也需要包含架构。因为如果没有,消费者(例如 Azure 流分析)如何知道如何反序列化?
我可以在网上找到的唯一示例使用 Microsoft.Hadoop.Avro.Container 命名空间。这似乎工作正常,我可以通过流分析读取。但是此代码是否“自动”包含有效负载中的架构?我确定在这里看不到任何对它的引用:
using (var memoryStream = new MemoryStream())
using (var writer = AvroContainer.CreateWriter<T>(memoryStream, Codec.Null))
using (var seqWriter = new SequentialWriter<T>(writer, items.Count()))
{
foreach (var e in items)
{
seqWriter.Write(e);
}
return memoryStream.ToArray();
}
.Net 中的 Avro 格局似乎有些混乱,为什么会有 Microsoft 特定的 NuGet pkg?好像很老了,现在是不是被什么东西取代了?是否有任何文档说明如何利用标准 Apache.Avro NuGet pkg 构建包含架构的有效负载?
Azure 事件中心文档曾短暂提及 Avro,但任何 google 搜索都只会发现 Event Hub Capture..
总之..有更好的方法吗?我不认为我可以为此单独发送架构..
【问题讨论】:
-
你能分享一下你指的是哪个微软文档吗?
-
嗯,这真的.. docs.microsoft.com/en-us/azure/event-hubs/… 就像我说的,它主要与 EventHub Capture 方面有关.. 看不到任何关于 Avro 序列化有效负载的明显内容.. 流分析文档也是一个有点轻!
-
我从最近的经验中得出的假设是,当您在 eventthubs 中写入 AVRO 时,数据嵌入在 AVRO 模式中,您不需要明确的模式定义。但是,我发现 Eventhubs 没有以 AVRO 格式显示摄取的数据并且无法反序列化以在 Azure 门户中正确显示它,这很奇怪。但是我的消费者可以解析数据并正确显示它
标签: c# avro azure-eventhub