Debezium将Avro数据视为二进制

时间:2019-12-17 18:17:31

标签: avro apache-kafka-connect debezium

我创建了一个简单的 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" }

它从数据库中获取数据,但是该值显示为二进制,并且密钥为空。

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

enter image description here

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

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

Debezium创建了一个用于存储DDL语句的主题,它可以正确显示。

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

1 个答案:

答案 0 :(得分:1)

之所以发生此问题,是因为debezium将消息以Avro格式存储在主题上。您可以通过 kafka-avro-console-consumer

轻松使用它