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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 28 апреля 2018

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

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, соединяемой со схемами Avro. По крайней мере, это свойство не является «обязательным» после 3.3.0, если я вспоминаю коммит, который удалил его

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

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

enhanced.avro.schema.support=true 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...