Apache kafka Kafka confluent:如何在JDBC接收器连接器中使用pk.mode=record_键进行upsert和delete模式?

Apache kafka Kafka confluent:如何在JDBC接收器连接器中使用pk.mode=record_键进行upsert和delete模式?,apache-kafka,apache-kafka-connect,confluent-platform,Apache Kafka,Apache Kafka Connect,Confluent Platform,在Kafka confluent中,在MySQL表中使用pk.mode=record_key作为复合键时,如何使用upsert将源文件作为CSV文件使用?upsert模式在使用pk时工作。模式=记录值。是否需要进行其他配置 如果我尝试使用pk.mode=record\u键,则会出现此错误。错误-由以下原因引起:org.apache.kafka.connect.errors.ConnectException:需要定义一个PK列,因为记录的密钥架构是基元类型。 下面是我的JDBC接收器连接器配置:

在Kafka confluent中,在MySQL表中使用pk.mode=record_key作为复合键时,如何使用upsert将源文件作为CSV文件使用?upsert模式在使用pk时工作。模式=记录值。是否需要进行其他配置

如果我尝试使用pk.mode=record\u键,则会出现此错误。错误-由以下原因引起:org.apache.kafka.connect.errors.ConnectException:需要定义一个PK列,因为记录的密钥架构是基元类型。 下面是我的JDBC接收器连接器配置:

    {
    "name": "<name>",
    "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "tasks.max": "1",
    "topics": "<topic name>",
    "connection.url": "<url>",
    "connection.user": "<user name>",
    "connection.password": "*******",
    "insert.mode": "upsert",
    "batch.size": "50000",
    "table.name.format": "<table name>",
    "pk.mode": "record_key",
    "pk.fields": "field1,field2",
    "auto.create": "true",
    "auto.evolve": "true",
    "max.retries": "10",
    "retry.backoff.ms": "3000",
    "mode": "bulk",
    "key.converter": "org.apache.kafka.connect.storage.StringConverter",
    "value.converter": "io.confluent.connect.avro.AvroConverter",
    "value.converter.schemas.enable": "true",
    "value.converter.schema.registry.url": "http://localhost:8081"
  }
}
您需要使用record.value的pk.mode。 这意味着从消息的值中获取字段,并将其用作目标表中的主键和用于UPSERT目的

如果设置record.key,它将尝试从Kafka消息密钥中获取密钥字段。除非您在消息键中实际获得了值,否则这不是您想要使用的设置

这些可能会进一步帮助您:

您需要使用record.value的pk.mode。 这意味着从消息的值中获取字段,并将其用作目标表中的主键和用于UPSERT目的

如果设置record.key,它将尝试从Kafka消息密钥中获取密钥字段。除非您在消息键中实际获得了值,否则这不是您想要使用的设置

这些可能会进一步帮助您:


谢谢你的回答。我能站起来。我尝试了在pk.fields中添加一个字段列表,因为我的MySQL表有一个复合键,它可以工作。但是如果我在连接器中也启用了删除模式,那么我必须将pk.mode设置为record_key。这里我无法设置复合键。我尝试在创建流时使用分区来实现这一点。它向表中添加了一个新行,并且没有将表的各个字段用作主键。我将参考该链接并再次尝试。您的评论描述了一个与您在原始问题中提出的问题不同的问题:您能否编辑原始问题并明确说明您遇到了什么问题?我已经发布了另一个关于评论中提到的问题的问题。谢谢你的回答。我能站起来。我尝试了在pk.fields中添加一个字段列表,因为我的MySQL表有一个复合键,它可以工作。但是如果我在连接器中也启用了删除模式,那么我必须将pk.mode设置为record_key。这里我无法设置复合键。我尝试在创建流时使用分区来实现这一点。它向表中添加了一个新行,并且没有将表的各个字段用作主键。我将参考该链接并再次尝试。您的评论描述了一个与您在原始问题中提出的问题不同的问题:您能否编辑原始问题并明确说明您遇到了什么问题?我已经发布了另一个关于评论中提到的问题的问题。