Я пишу соединитель Kafka, чтобы загрузить некоторые данные из нескольких источников на Github (текстовые и yaml-файлы) и преобразовать их в объекты определенного класса, который автоматически генерируется из avsc-файла:
{
"type": "record",
"name": "MatomoRecord",
"fields": [
{"name": "name", "type": "string"},
{"name": "type", "type": "string"},
{"name": "timestamp", "type": "long"}
]
}
Пока все прошло успешно.Итак, теперь у меня есть Карта объектов, которую я хочу сохранить в теме Кафки.Для этого я пытаюсь создать SourceRecords:
for (Map.Entry<String, MatomoRecord> record : records.entrySet()) {
sourceRecords.add(new SourceRecord(
sourcePartition,
sourceOffset,
matomoTopic,
0,
org.apache.kafka.connect.data.Schema.STRING_SCHEMA,
record.getKey(),
matomoSchema,
record.getValue())
);
}
Как определить схему значений типа org.apache.kafka.connect.data.Schema на основе схемы avro?Для теста я вручную создал схему с помощью Builder:
Schema matomoSchema = SchemaBuilder.struct()
.name("MatomoRecord")
.field("name", Schema.STRING_SCHEMA)
.field("type", Schema.STRING_SCHEMA)
.field("timestamp", Schema.INT64_SCHEMA)
.build();
Результат был:
org.apache.kafka.connect.errors.DataException: Invalid type for STRUCT: class MatomoRecord
Может ли кто-нибудь помочь мне определить схему значений на основе схемы avro?
С наилучшими пожеланиями, Мартин