Может ли KafkaConsumer читать данные из темы, написанной SourceTask? - PullRequest
1 голос
/ 03 мая 2019

Если мы записали в данные темы Kafka с помощью SourceTask, в котором мы определили схему для SourceRecords, отличную от Schema.STRING_SCHEMA, то это пользовательская схема, например:

private final Schema valueSchema = SchemaBuilder.struct()
.field("dim0", Schema.FLOAT64_SCHEMA)
.field("dim1", Schema.FLOAT64_SCHEMA)
.field("dim2", Schema.FLOAT64_SCHEMA)
.field("dim3", Schema.FLOAT64_SCHEMA)
.build();

тогда может ли KafkaConsumer иметь возможность считывать данные из этой темы?

Или только SinkTask может читать данные из этой темы, поскольку вы можете определить схему для SinkRecords так же, как для SourceRecords?

Заранее спасибо!

1 Ответ

1 голос
/ 03 мая 2019

Вы бы полагались на интерфейс Converter для обработки сериализации для вас.

Метод в исходном коде для этого fromConnectData.

enter image description here

Я знаю о Struct объектах.

  • JsonConverter входит в состав Apache Kafka

  • AvroConverter от Confluent

  • ProtobufConverter от BlueApron.

Если вы используете StringConveter, вы получите записи, которые выглядят как Struct{dim0=1,dim1=2,dim2=3,dim3=4}, которые нужно будет анализировать вручную по сравнению с получением правильных структурированных объектов с использованием другихопции.

Преобразователи часто являются обертками для интерфейсов Serializer и Deserializer, поэтому вы должны включить соответствующий класс Deserializer в свой код потребителя.

img src: Deep Dive блог от Confluent.

...