【发布时间】:2018-05-27 20:21:36
【问题描述】:
我有一个以 JSON 格式编写的架构。我从 kafka 服务器得到一个字符串,如下所示:
\ 0 \ 0 \ 0 \ u00032H45d71580-9781-4d9c-8535-a233ff7c3122 \ nPLANTH45d71580-9781-4d9c-8535-a233ff7c3122 \ nPLANT,2017-12-12T16:34:15GMT \ u001020171212 \ u0018201712121034 \ nthertH1AB5297A-9D28- 4742-A95C-4A4CEED7037D\n假\n假\n交叉\u00021\u00025
现在我尝试反序列化字符串并根据我的 Schema 文件将其转换为 Object。我怎么能在 C# 中做到这一点?有没有我可以使用的库?
我尝试了 Microsoft.Hadoop.Avro。 https://docs.microsoft.com/en-us/azure/hdinsight/hadoop/apache-hadoop-dotnet-avro-serialization#Scenario1 一旦代码运行到:
var actual = avroSerializer.Deserialize(buffer);
它会抛出一个异常: “数组尺寸超出支持范围”
我从 kafka 获取字符串。另一个应用程序产生它,我的应用程序消耗它。该应用程序生成它是用 swift 编写的,他们使用一些 nodejs lib 进行序列化。所以我猜字符串的格式是否重要?
kafka 消息由 Javascript 应用程序生成。他们使用名为 AVSC(Avro for Javascript)的库来序列化字符串。收到消息(字符串)后,我将其转换为字节流,之后我发现这个字节与 AVSC lib 生成的原始字节有点不同。但为什么呢?
【问题讨论】:
-
在 Google 上找到:Serializing data with the Microsoft .NET Library for Avro 和 nuget.org/packages/Microsoft.Hadoop.Avro。但是,无论好坏,有关工具或库建议的问题都在 StackOverflow 上off topic。
-
我在发布问题之前检查了所有这些。这些都不起作用。 Microsoft hadoop avro 并没有真正工作......
标签: c# apache-kafka avro