Ошибка при получении схемы Avro для идентификатора 1, тема не найдена .;код ошибки: 40401 - PullRequest
0 голосов
/ 25 мая 2018
Caused by: org.apache.kafka.common.errors.SerializationException: Error retrieving Avro schema for id 1
Caused by: io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException: Subject not found.; error code: 40401

Confluent Version 4.1.0

Я использую данные из нескольких тем (topic_1, topic_2), используя KTable, объединяю данные и затем помещаю данные в другую тему (topic_out) с помощью KStream,(Ktable.toStream ())

Данные в формате avro

Когда я проверяю схему с помощью

curl -X GET http://localhost:8081/subjects/ 

Я нахожу

topic_1-value
topic_1-key
topic_2-value
topic_2-key
topic_out-value

но нет темы с topic_out-key.Почему он не создан?

вывод topic_out:

kafka-avro-console-consumer --bootstrap-server localhost:9092 --from-beginning --property print.key=true --topic topic_out

"code1  "   {"code":{"string":"code1  "},"personid":{"string":"=NA="},"agentoffice":{"string":"lic1        "},"status":{"string":"a"},"sourcesystem":{"string":"ILS"},"lastupdate":{"long":1527240990138}}

Я вижу генерируемый ключ, но нет предмета для ключа.

Почему субъект подчиняется ключутребуется?
Я передаю эту тему в другой коннектор (hdfs-sink), чтобы отправить данные в hdfs, но происходит сбой с приведенной ниже ошибкой

Caused by: org.apache.kafka.common.errors.SerializationException: Error retrieving Avro schema for id 5\nCaused by: io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException: Subject not found.; error code: 40401

, когда я смотрю на schema-registry.logs,Я вижу:

[2018-05-24 15:40:06,230] INFO 127.0.0.1 - - 
[24/May/2018:15:40:06 +0530] "POST /subjects/topic_out-key?deleted=true HTTP/1.1" 404 51  9 (io.confluent.rest-utils.requests:77)

есть идеи, почему не создается ключ topic_out темы?

1 Ответ

0 голосов
/ 30 июня 2018

любая идея, почему субъектный ключ topic_out не создается

Поскольку ключ вашего вывода Kafka Streams является строкой, а не строкой в ​​кодировке Avro.

Вы можете проверить это, используя вместо этого kafka-console-consumer и добавив --property print.value=false и не увидев никаких специальных символов по сравнению с той же командой, когда вы печатаете значение (это показывает, что данные являются двоичными Avro)

В Kafka Connect вы должны использовать класс StringConverter Kafka для свойства key.converter, а не Confluent Avro one

...