apache-kafka - 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="
}
谁能指出问题出在哪里,或者配置可能有什么问题?
提前致谢!
解决方案
字段中有一个错字
"decimal.handling.mode":"double"
。
我的假设,问题是由于上述配置字段的默认值是precise
基于将其映射到字节(文字类型)的文档(https://debezium.io/documentation/reference/connectors/mysql .html#mysql-decimal-types )
注意:double
confluent 文档下没有提到,但它只存在于 debezium 文档下。
这是融合文档
https://docs.confluent.io/5.5.1/connect/debezium-connect-mysql/mysql_source_connector_config.html
推荐阅读
- json - HttpClientFactory 和 WebAssembly .Net 核心托管在客户端崩溃
- google-app-engine - TypeError:无法在第 100 行读取未定义的属性“4”
- amazon-web-services - 如何使用 Kops 公开部署在 AWS 中 kubernetes 上的 GRPCS 服务
- spring-data-jpa - Spring Boot DataJpaTest 因 java.lang.IllegalStateException 失败:原因:给定类型必须是接口
- sql - 重复值 SQL
- r - 如何计算R中组内日期的时间间隔?
- python - Python:CERTIFICATE_VERIFY_FAILED,Windows
- angular - 为什么异步管道的新数据不会导致数据重新呈现?
- ios - 存档 Cordova 项目 - 路径不存在:www
- basic - 我可以把整个控制台保存为字符串变量吗?