汇编4.0.0 Kafka Connect - 未找到架构注册表主题:org.apache.kafka.connect.errors.DataException:

时间:2018-04-17 15:38:57

标签: apache-kafka apache-kafka-connect confluent confluent-schema-registry ksql

我已经检查了2个类似的问题,但它没有帮助。

node 1 [/appl/node1/confluent-4.0.0] ./bin/confluent status elasticsearch-sink


{"name":"elasticsearch-sink","connector":{"state":"RUNNING","worker_id":"10.192.226.24:8083"},"tasks":[{"state":"FAILED","trace":"org.apache.kafka.connect.errors.DataException:
emailfilters\n\tat
io.confluent.connect.avro.AvroConverter.toConnectData(AvroConverter.java:96)\n\tat
org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:453)\n\tat
org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:287)\n\tat
org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:198)\n\tat
org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:166)\n\tat
org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:170)\n\tat
org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:214)\n\tat
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat
java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat
java.lang.Thread.run(Thread.java:748)\nCaused by:
org.apache.kafka.common.errors.SerializationException: Error
retrieving Avro schema for id 21\nCaused by:
io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException:
Subject not found.; error code: 40401\n\tat
io.confluent.kafka.schemaregistry.client.rest.RestService.sendHttpRequest(RestService.java:191)\n\tat
io.confluent.kafka.schemaregistry.client.rest.RestService.httpRequest(RestService.java:218)\n\tat
io.confluent.kafka.schemaregistry.client.rest.RestService.lookUpSubjectVersion(RestService.java:284)\n\tat
io.confluent.kafka.schemaregistry.client.rest.RestService.lookUpSubjectVersion(RestService.java:272)\n\tat
io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.getVersionFromRegistry(CachedSchemaRegistryClient.java:71)\n\tat
io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.getVersion(CachedSchemaRegistryClient.java:182)\n\tat
io.confluent.kafka.serializers.AbstractKafkaAvroDeserializer.deserialize(AbstractKafkaAvroDeserializer.java:152)\n\tat
io.confluent.kafka.serializers.AbstractKafkaAvroDeserializer.deserializeWithSchemaAndVersion(AbstractKafkaAvroDeserializer.java:194)\n\tat
io.confluent.connect.avro.AvroConverter$Deserializer.deserialize(AvroConverter.java:121)\n\tat
io.confluent.connect.avro.AvroConverter.toConnectData(AvroConverter.java:84)\n\tat
org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:453)\n\tat
org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:287)\n\tat
org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:198)\n\tat
org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:166)\n\tat
org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:170)\n\tat
org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:214)\n\tat
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat
java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat
java.lang.Thread.run(Thread.java:748)\n","id":0,"worker_id":"10.192.226.24:8083"}],"type":"sink"}

我的属性:

name=elasticsearch-sink
connector.class=io.confluent.connect.elasticsearch.ElasticsearchSinkConnector
tasks.max=1
topics=emailfilters
key.ignore=true
connection.url=http://127.0.0.1:9197
type.name=kafka-connect

尝试添加以下内容但仍会出现相同的错误。

value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=http://node1:9193

我的主题是从KSQL流中填充的。

2 个答案:

答案 0 :(得分:0)

这是失败的原因:

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

这意味着您定义的架构注册表没有该主题数据的架构。您是否在连接器配置中指定了与使用KSQL时相同的架构注册表?

答案 1 :(得分:0)

我已经注意到,如果对Avro使用key.converter,那么它将仍然尝试从字符串,整数等非Avro数据类型中提取模式,然后给出这些令人困惑的错误。它唯一的校验是检查字节有效载荷是否以0开头,然后仅获取接下来的4个字节,这并没有真正表明它绝对不是Avro。

检查主题密钥的数据类型,然后检查Connect属性