Как обрабатывать ссылки на круглый тип в схемах Avro?C#

Место общения программистов C#
Anonymous
Как обрабатывать ссылки на круглый тип в схемах Avro?

Сообщение Anonymous »

Я использую apache.avro для .NET для сериализации и пытаюсь проанализировать файлы схемы .AVSC, которые содержат круглые ссылки между 2 записями. Тем не менее, я не могу понять, как я собираюсь проанализировать схемы, так как какой -либо из них проанализирован сначала, вызовет исключение, поскольку другой тип еще не определен. Из того, что я могу сказать, поддержка циркулярных ссылок была добавлена ​​с помощью запроса AVRO-695, и была поддержана AVRO-1692, поэтому я считаю, что это использование следует поддерживать.

Код: Выделить всё

{
"name": "MyNamespace.Foo",
"type": "record",
"fields": [
{
"name": "Name",
"type": "string"
},
{
"name": "Bar",
"type": "MyNamespace.Bar"
}
]
}
bar.avsc

Код: Выделить всё

{
"name": "MyNamespace.Bar",
"type": "record",
"fields": [
{
"name": "Name",
"type": "string"
},
{
"name": "Foo",
"type": "MyNamespace.Foo"
}
]
}
< /code>
Я пытаюсь проанализировать их, чтобы создать схему союза с обоими типами: < /p>
var fooSchemaJson = File.ReadAllText("./Foo.avsc");
var barSchemaJson = File.ReadAllText("./Bar.avsc");

var fooSchema = Schema.Parse(fooSchemaJson);
var barSchema = Schema.Parse(barSchemaJson);

var combinedSchema = UnionSchema.Create(new List { fooSchema, barSchema }, null);
< /code>
Это выбрасывает приведенную ниже ошибку: < /p>
Avro.SchemaParseException: Undefined name: MyNamespace.Bar at 'fields[1].type'
at Avro.Schema.ParseJson(JToken jtok, SchemaNames names, String encspace)
at Avro.RecordSchema.createField(JToken jfield, Int32 pos, SchemaNames names, String encspace)
at Avro.RecordSchema.NewInstance(Type type, JToken jtok, PropertyMap props, SchemaNames names, String encspace)
at Avro.NamedSchema.NewInstance(JObject jo, PropertyMap props, SchemaNames names, String encspace)
at Avro.Schema.ParseJson(JToken jtok, SchemaNames names, String encspace)
at Avro.Schema.Parse(String json, SchemaNames names, String encspace)
at Avro.Schema.Parse(String json)
Есть ли мне не хватает другой метод, в котором я могу анализировать несколько схем одновременно, чтобы все типы были найдены?

Подробнее здесь: https://stackoverflow.com/questions/794 ... ro-schemas

Вернуться в «C#»