Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Kafka JDBC接收器连接器后的数据不匹配_Postgresql_Jdbc_Apache Kafka_Apache Kafka Connect_Debezium - Fatal编程技术网

Postgresql Kafka JDBC接收器连接器后的数据不匹配

Postgresql Kafka JDBC接收器连接器后的数据不匹配,postgresql,jdbc,apache-kafka,apache-kafka-connect,debezium,Postgresql,Jdbc,Apache Kafka,Apache Kafka Connect,Debezium,试图使用kafka connect jdbc将数据导入PostgreSQL,但数据库中的某些值与kafka消息值不同 接收器配置: { "name": "test-sink", "config": { "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector", "tas

试图使用
kafka connect jdbc
将数据导入PostgreSQL,但数据库中的某些值与kafka消息值不同

接收器配置:

{
    "name": "test-sink",
    "config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
        "tasks.max": "1",

        "connection.url": "jdbc:postgresql://localhost:5432/test_db?user=test&password=test",
        "dialect.name": "PostgreSqlDatabaseDialect",

        "topics.regex": "test.public.(.*)",

        "transforms": "dropPrefix, unwrap",
        "transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState",
        "transforms.unwrap.drop.tombstones": "false",

        "transforms.dropPrefix.type": "org.apache.kafka.connect.transforms.RegexRouter",
        "transforms.dropPrefix.regex": "test.public.(.*)",
        "transforms.dropPrefix.replacement": "public.test_$1",

        "auto.create": "true",
        "auto.evolve": "true",
        "insert.mode": "upsert",
        "pk.fields": "id",
        "pk.mode": "record_key",
        "delete.enabled": "true",
        "batch.size": "1"
    }
}
卡夫卡主题中的信息:

{ “模式”:{ “类型”:“结构”, “字段”:[ { “类型”:“结构”, “字段”:[ { “类型”:“int64”, “可选”:false, “字段”:“id” }, { “类型”:“int64”, “可选”:正确, “字段”:“测试代码” }, { “类型”:“字符串”, “可选”:正确, “字段”:“测试b__c” }, { “类型”:“字符串”, “可选”:正确, “字段”:“测试” }, { “类型”:“数组”, “项目”:{ “类型”:“字符串”, “可选”:true }, “可选”:正确, “字段”:“测试” }, { “类型”:“int64”, “可选”:正确, “字段”:“测试id” } ], “可选”:正确, “名称”:“test.public.test.Value”, “字段”:“之前” }, { “类型”:“结构”, “字段”:[ { “类型”:“int64”, “可选”:false, “字段”:“id” }, { “类型”:“int64”, “可选”:正确, “字段”:“测试代码” }, { “类型”:“字符串”, “可选”:正确, “字段”:“测试b__c” }, { “类型”:“字符串”, “可选”:正确, “字段”:“测试” }, { “类型”:“数组”, “项目”:{ “类型”:“字符串”, “可选”:true }, “可选”:正确, “字段”:“测试” }, { “类型”:“int64”, “可选”:正确, “字段”:“测试id” } ], “可选”:正确, “名称”:“test.public.test.Value”, “字段”:“之后” }, { “类型”:“结构”, “字段”:[ { “类型”:“字符串”, “可选”:false, “字段”:“版本” }, { “类型”:“字符串”, “可选”:false, “字段”:“连接器” }, { “类型”:“字符串”, “可选”:false, “字段”:“名称” }, { “类型”:“int64”, “可选”:false, “字段”:“ts_ms” }, { “类型”:“字符串”, “可选”:正确, “名称”:“io.debezium.data.Enum”, “版本”:1, “参数”:{ “允许”:“正确、最后、错误” }, “默认值”:“false”, “字段”:“快照” }, { “类型”:“字符串”, “可选”:false, “字段”:“db” }, { “类型”:“字符串”, “可选”:false, “字段”:“架构” }, { “类型”:“字符串”, “可选”:false, “字段”:“表” }, { “类型”:“int64”, “可选”:正确, “字段”:“txId” }, { “类型”:“int64”, “可选”:正确, “字段”:“lsn” }, { “类型”:“int64”, “可选”:正确, “字段”:“xmin” } ], “可选”:false, “名称”:“io.debezium.connector.postgresql.Source”, “字段”:“源” }, { “类型”:“字符串”, “可选”:false, “字段”:“op” }, { “类型”:“int64”, “可选”:正确, “字段”:“ts_ms” }, { “类型”:“结构”, “字段”:[ { “类型”:“字符串”, “可选”:false, “字段”:“id” }, { “类型”:“int64”, “可选”:false, “字段”:“总订单” }, { “类型”:“int64”, “可选”:false, “字段”:“数据收集顺序” } ], “可选”:正确, “字段”:“事务” } ], “可选”:false, “名称”:“test.public.test.Envelope” }, “有效载荷”:{ “之前”:空, “之后”:{ “id”:4441, “测试代码”:3606, “测试c”:“QWERTY”, “test_a_t”:空, “测试p”:[ “qwe”, “asd”, “zxc” ], “测试id”:22827 }, “来源”:{ “版本”:“1.2.2.最终版”, “连接器”:“postgresql”, “名称”:“测试”, “ts_ms”:1599543319277, “快照”:“假”, “db”:“测试”, “schema”:“public”, “表”:“测试”, “txId”:3914206, “lsn”:108940649328, “xmin”:空 }, “op”:“u”, “ts_ms”:1599543319509, “交易”:空 } }

例:

大约有5-10%的数据不匹配,并且所有数据都只出现在20列中的2列中


有人知道是什么导致了这样的问题吗?

您如何知道您正在比较正确的消息?例如,
test\u c\u id=22632
中是否有其他一些数据在
test\u c\u id=3606
之后被追加?@OneCricketeer通过查找具有特定
“id”:XXXX
的消息来查找这些数据。我的意思是,我很确定我看到的是正确的消息,所以我创建了第二个只包含一个主题的接收器连接器,它只在一个文件中工作。数据库中的数据与预期一样,即使它们都从同一个主题读取,我猜这与您的
RegexRouter
设置有关,该设置正在多个数据库之间覆盖一些数据topics@OneCricketeer是的,问题似乎是因为
RegexRouter
您如何知道您正在比较正确的消息?例如,
test\u c\u id=22632
中是否有其他一些数据在
test\u c\u id=3606
之后被追加?@OneCricketeer通过查找具有特定
“id”:XXXX
的消息来查找这些数据。我的意思是,我很确定我看到的是正确的消息,所以我创建了第二个只包含一个主题的接收器连接器,它只在一个文件中工作。数据库中的数据与预期一样,即使它们都从同一个主题读取,我猜这与您的
RegexRouter
设置有关,该设置正在多个数据库之间覆盖一些数据topics@OneCricketeer是的,问题似乎是因为
RegexRouter
Kafka                  Sink DB
---------------------------------------
test_c_id: 3606        test_c_id: 22632
test_b_c: QWERTY       test_b_c: null