Debezium 将 Avro 数据视为二进制

Posted

技术标签:

【中文标题】Debezium 将 Avro 数据视为二进制【英文标题】:Debezium treats Avro data as binary 【发布时间】:2020-04-10 07:04:40 【问题描述】:

我创建了一个简单的 Debezium/mysql 连接器:

   "name": "debezium_source_books",   
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",   
    "tasks.max": "1",   
    "database.hostname": "...",   
    "database.port": "3306",  
    "database.user": "root",   
    "database.password": "root",
    "database.server.id": "...",
    "database.server.name": "...", 
    "database.history.kafka.bootstrap.servers": "localhost:9092",   
    "database.history.kafka.topic": "strapi",
    "table.whitelist": "strapi.books",

    "include.schema.changes": "true",

    "key.converter": "io.confluent.connect.avro.AvroConverter",   
    "key.converter.schema.registry.url": "http://localhost:8081",

    "value.converter": "io.confluent.connect.avro.AvroConverter",   
    "value.converter.schema.registry.url": "http://localhost:8081" 

它从数据库中获取数据,但是值是二进制的,key是空的。

运行kafka-console-consumer --bootstrap-server localhost:9092 --topic readology.strapi.books --property print.key=true --from-beginning 后,我得到类似这样的记录:

Schema Registry 响应 http 请求,并且连接器确实创建了 -key 和 -value 模式。 在二进制数据中,我可以识别出典型的“之前”和“之后”内容。

我使用 Kafka 的消费者和 Landoop 的 UI 得到了类似的结果,所以我认为这与消费者无关。

Debezium 为存储 DDL 语句创建了一个主题,它显示正确。

您知道可能出了什么问题吗?或者,我该如何调试它?

【问题讨论】:

看来 kafka-avro-console-consumer 显示了正确的数据。我认为 lensio/fast-data-dev 的 UI 已经发疯了。 【参考方案1】:

出现此问题是因为 debezium 将消息以 Avro 格式存储在主题上。您可以轻松地使用 kafka-avro-console-consumer

【讨论】:

以上是关于Debezium 将 Avro 数据视为二进制的主要内容,如果未能解决你的问题,请参考以下文章

AVRO 的二进制编码是不是压缩数据?

从 Avro Debezium 数据创建基于 Avro 的 KSQL 流会生成奇怪的模式

如何使用 Avro 二进制编码器对 Kafka 消息进行编码/解码?

在Avro Debezium数据上创建一个基于Avro的KSQL流,会产生奇怪的模式。

在意外删除 AWS RDS 二进制日志后恢复 Debezium MySQL 连接器

如何从 Debezium 创建的 avro 消息中获取字段?