gpt4 book ai didi

apache-kafka - debezium 生成事件的 Kafka Connect 日期处理

转载 作者:行者123 更新时间:2023-12-03 17:02:40 27 4
gpt4 key购买 nike

我正在使用 debezium SQL Server 来跟踪生产基础上的变化。
主题已创建,CDC 的工作就像一个魅力,但是当尝试使用 jdbcSinkConnector 将数据转储到另一个 Sql Server DB 时,我遇到了以下错误。
com.microsoft.sqlserver.jdbc.SQLServerException: One or more values is out of range of values for the datetime2 SQL Server data type
在源数据库上,sql 数据类型是 timestamp2(7) .
kafka 事件是 1549461754650000000。
架构类型是 INT64。
架构名称 io.debezium.time.NanoTimestamp。

我找不到一种方法来告诉 TimestampConverter 值不是以毫秒或微秒表示,而是以纳秒表示(无论如何都不能使用微秒)。

这是我的连接器配置

{
"name": "cdc.swip.bi.ods.sink.contract",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"tasks.max": "1",
"topics": "swip.swip_core.contract",
"connection.url": "jdbc:sqlserver://someip:1234;database=DB",
"connection.user": "loloolololo",
"connection.password": "muahahahahaha",
"dialect.name": "SqlServerDatabaseDialect",
"auto.create": "false",
"key.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter": "io.confluent.connect.avro.AvroConverter",
"key.converter.schemas.enable": "true",
"key.converter.schema.registry.url": "http://localhost:8081",
"value.converter.schemas.enable": "true",
"value.converter.schema.registry.url": "http://localhost:8081",
"transforms": "unwrap,created_date,modified_date",
"transforms.unwrap.type": "io.debezium.transforms.UnwrapFromEnvelope",
"transforms.created_date.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
"transforms.created_date.target.type": "Timestamp",
"transforms.created_date.field": "created_date",
"transforms.modified_date.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
"transforms.modified_date.target.type": "Timestamp",
"transforms.modified_date.field": "modified_date",
"insert.mode": "insert",
"delete.enabled": "false",
"pk.fields": "id",
"pk.mode": "record_value",
"schema.registry.url": "http://localhost:8081",
"table.name.format": "ODS.swip.contract"
}
}

最佳答案

SQL Server 连接器中缺少一个功能 - DBZ-1419 .

您可以通过编写自己的 SMT 来解决该问题,该 SMT 将在接收器端进行字段转换,然后再由 JDBC 连接器处理。

关于apache-kafka - debezium 生成事件的 Kafka Connect 日期处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57271272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com