当前位置: 首页 > 知识库问答 >
问题:

检索id 1的Avro架构时出错,未找到主题。;错误代码:40401

蓬琦
2023-03-14
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将数据推送到另一个主题(totic_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键。为什么不创建它?

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}}

我可以看到密钥正在生成,但没有密钥的主题。

为什么需要带密钥的主题?< br >我将此主题提供给另一个连接器(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没有被创建吗?

共有1个答案

岳正浩
2023-03-14

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

因为Kafka Streams输出的键是字符串,而不是Avro编码的字符串。

您可以使用Kafka控制台消费者并添加——属性打印来验证这一点。value=false,并且在打印值时,与同一命令相比,没有看到任何特殊字符(这显示数据为二进制Avro)

从 Kafka Connect 开始,您必须将 Kafka 的 StringConverter 类用于 key.converter 属性,而不是 Confluent Avro 类。

 类似资料:
  • 我有Kafka的以下配置 我试图通过版本得到主题,我得到如下 我使用插件<;代码>;avro-maven插件>;生成>;CreateBankAccount>;代码< 然后,我用一个字符串键和一个avro序列化的有效负载向主题推送一条消息,但是我有一个错误 轨道: ProducerConfig值: KafkaAvroSerializerConfig值:

  • 我创建了一个NiFi流,该流最终将json记录发布为具有Avro编码值和字符串键的记录,使用了值模式的融合注册表中的模式。这是NiFi中AvroRecordSetWriter的配置。 我现在正在尝试使用Kafka Connect()使用JdbcSinkConnector将消息移动到PostgreSQL数据库,但收到以下错误:检索id 1的Avro架构时出错 我已经确认我的Confluent注册表中

  • 首先感谢@OneCricketeer到目前为止的支持,我到现在已经尝试了这么多配置,不知道还有什么可以尝试的。 使用 confluent 访问外部流。 连接正在工作,我可以看到加载了偏移量: INFO[my_mysql_sink|task-0][消费者clientId=连接器-消费者-my_mysql_sink-0, groupId=连接器-my_mysql_sink]设置分区的偏移量gamerb

  • 大家好,我有一个模拟ATM机的程序。它使用我创建的account类,在用户输入0到999999之间的id后,为用户生成一个帐户。然后,他们可以执行各种任务,如查看余额、取款、存款等。不过,我在检查程序时遇到了一个问题。它编译时没有错误,并且第一次通过循环时,它工作得非常完美。但是,如果他们点击退出并输入另一个无效id,它会显示两次无效输入消息。我复制了下面发生的事情的控制台。有人能给我解释一下为什

  • 我是编程新手,我非常喜欢它。我刚刚下载了Eclipse,我遇到了一个无法帮助我解决的错误。不幸的是,它是德语的,但意思是:“找不到主类”-“Fehler: Hauptcroasse konnte nicht gefunden oder geladen werden” 我知道它与“”有关。因为这对我来说是全新的,所以你能帮我会很酷。 下面的错误源代码;

  • 我花了半天时间试图为此找到一个可行的解决方案,但要么我做错了一切,要么什么都不适合我。我是Java和JavaFX的新手。 我在Windows上使用VSCode,并且安装了“Extension Pack for Java”和“Maven for Java”扩展,我使用JAVAFX原型作为构建方法创建了一个项目。 生成了一个示例项目,我运行它没有问题,甚至没有添加带有“VMargs”等的“launch