Как создать запись Avro Pojo с картой массива типов значений?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как создать запись Avro Pojo с картой массива типов значений?

Сообщение Anonymous »

Кто-то в моей организации попытался придумать такую ​​схему Avro:

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

{
"type": "record",
"name": "ASillySchema",
"namespace": "com.my.company.redacted",
"fields": [
{
"name": "my_overly_complex_map",
"type": [
"null",
{
"type": "map",
"values": [
"null",
"string",
"boolean",
"int",
"long",
"float",
"double",
{
"type": "array",
"items": [
"null",
"string",
"boolean",
"int",
"long",
"float",
"double"
]
}
]
}
],
"default": null
}
]
}

Я пытаюсь добавить тесты в приложение Java Kafka Streams, которое использует эту тему. Я не могу понять, как создать сообщение с полем карты с записью типа массива. Вот что я по наивности пробовал:

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

Map myOverlyComplexMap = new HashMap();
List mixedTypeObjectArray = Arrays.asList(
null,
"a string",
true,
35,
20L,
201f,
202d
);
myOverlyComplexMap.put("arrayKey", mixedTypeObjectArray);
ASillySchema testRecord = ASillySchema.newBuilder()
.setMyOverlyComplexMap(myOverlyComplexMap)
.build();

// send testRecord to topic using Java kafka producer...
Я получаю следующую ошибку:

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

Caused by: org.apache.avro.UnresolvedUnionException: Not in union ["null","string","boolean","int","long","float","double"]: [null, a string, true, 35, 20, 201.0, 202.0]
at org.apache.avro.generic.GenericData.resolveUnion(GenericData.java:896)
at org.apache.avro.generic.GenericDatumWriter.resolveUnion(GenericDatumWriter.java:272)
at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:143)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83)
at org.apache.avro.generic.GenericDatumWriter.writeMap(GenericDatumWriter.java:305)
at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:140)
...
Кто-нибудь знает, как создать объект Java, который я пытаюсь отправить?

Подробнее здесь: https://stackoverflow.com/questions/789 ... type-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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