2
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

汇合版本 4.1.0

我正在使用 KTable 使用来自几个主题(topic_1,topic_2)的数据,加入数据,然后使用 KStream 将数据推送到另一个主题(topic_out)。(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-key 吗?

4

1 回答 1

3

知道为什么没有创建主题 topic_out-key

因为您的 Kafka Streams 输出的 Key 是一个字符串,而不是 Avro 编码的字符串。

当您打印值时,您可以验证使用kafka-console-consumer而不是添加并且没有看到与相同命令相比的任何特殊字符(这显示数据是二进制 Avro)--property print.value=false

从 Kafka Connect,您必须使用 Kafka 的 StringConverter 类来获取key.converter属性,而不是 Confluent Avro 之一

于 2018-06-30T14:35:58.423 回答