Могу ли я использовать реестр схем для получения схемы при использовании раковины kafka s3?

У меня есть тема kafka, значение там в формате avro, где схема хранится в реестре схемы.

Теперь я хочу настроить S3 Sink, следуя этому: https://docs.confluent.io/current/connect/connect-storage-cloud/kafka-connect-s3/docs/s3_connector.html

На веб-странице они используют

schema.generator.class=io.confluent.connect.storage.hive.schema.DefaultSchemaGenerator

И когда я попытался перезагрузить сгенерированные данные.avro, я обнаружил, что схема немного отличается. Например, вложенный тип enum стал string. Я могу только восстановить GenericRecord вместо SpecificRecord,

Есть ли способ указать генератор схемы, который извлекает схему из реестра схем?

1 ответ

Решение

Схема получена из реестра, если вы использовали

format.class=io.confluent.connect.s3.format.avro.AvroFormat

И если Connect не сможет получить доступ к реестру, он фактически не сможет записать записи Avro.

Вы настраиваете конфигурацию реестра в файле свойств рабочего Kafka Connect, а не в самом соединителе. (именуется как connect-avro.properties или что-то в этом роде).

И он преобразуется в общую запись, потому что ваша конкретная запись, скорее всего, не находится в пути к классу Connect. Эти "дополнительные не схемы" данные, добавляемые Connect, являются просто метаданными, но вы можете отключить их.

connect.meta.data=false 

Это свойство, которое вы упомянули, на самом деле используется только HDFS Connect для схемы Hive, а не S3 connect со схемами Avro. По крайней мере, это свойство не является "обязательным" после 3.3.0, если я вспоминаю коммит, который удалил его

Что касается перечислений, да, они преобразуются в строки, и это на самом деле открытая проблема, которая, как мне кажется, была решена только в последней версии (Confluent 4.1)

Вам нужно установить это свойство, чтобы исправить это

enhanced.avro.schema.support=true 
Другие вопросы по тегам