首页 > 解决方案 > Debezium:双值序列化/反序列化问题

问题描述

我遇到了通过 CDC 使用 Debezium 连接器和 mysql 从 mysql 表中获取 Double 值的问题。

以下是连接器道具:

{
  "name": "test",
  "config": {
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",
    "tasks.max": "10",
    "database.hostname": "mysql.default",
    "database.port": "3306",
    "database.user": "debezium",
    "database.password": "debezium",
    "database.server.name": "mydb", 
    "database.history.kafka.bootstrap.servers": "kafka:9092",
    "database.history.kafka.topic": "schema-changes.mysql",
    "table.whitelist": "mydb.request",
    "transforms": "unwrap",
    "transforms.unwrap.type": "io.debezium.transforms.UnwrapFromEnvelope",
    "decimal.handing.mode":"double",
    "key.converter.schemas.enable": "false",
    "value.converter": "org.apache.kafka.connect.json.JsonConverter",
    "value.converter.schemas.enable": "false",
    "topic.creation.default.retention.ms": 86400000,
    "snapshot.locking.mode": "none",
    "topic.creation.default.replication.factor":3,
    "topic.creation.default.partitions": 3
  }
}

上面的配置生成的主题为 name mydb.mydb.request,当我尝试通过 CLI 控制台使用者读取该主题时,我将所有双精度值反序列化为字符串(total_amount_without_discount、total_amount、discount_amount),如下所示:

{
    "id": 123,
.
.
.
    "total_amount_without_discount": "Al/Q",
    "total_amount": "AlqI",
    "discount_amount": "BUg="
}

谁能指出问题出在哪里,或者配置可能有什么问题?

提前致谢!

标签: apache-kafkadebezium

解决方案


字段中有一个错字 "decimal.handling.mode":"double"

我的假设,问题是由于上述配置字段的默认值是precise基于将其映射到字节(文字类型)的文档(https://debezium.io/documentation/reference/connectors/mysql .html#mysql-decimal-types )

注意:doubleconfluent 文档下没有提到,但它只存在于 debezium 文档下。

这是融合文档
https://docs.confluent.io/5.5.1/connect/debezium-connect-mysql/mysql_source_connector_config.html


推荐阅读