首页 > 解决方案 > Kafka Connect有没有办法忽略模式文件中的1个字段并将其他字段读入数据库

问题描述

我正在尝试将此模式文件下沉到数据库中,其中一种字段类型是布尔值的映射

reservation table

create table "table-reservation" (
  "sessionId" varchar,
  "enteredReservation" boolean,
  latitude double,
  longitude double

架构文件

{
  "name":"sessionId",
  "type":"string
},
{ 
 "name":"enteredReservation",
 "type": "map",
 "values":"boolean"
},
{
 "name":"latitude",
 "type":"double"
},
{
 "name":"longitude",
 "type":"double"
}

接收器连接器的配置

"tasks.max":"1",
"connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.url":"URL",
"topics":"table-reservation",
"quote.sql.identifiers":"always",
"errors.tolerance":"all",
"errors.log.enable":"true",
"errors.log.include.messages":"true"

有没有办法只忽略enteredReservation字段并将其设置为空。我读到,如果我们使用 SMT 进行 DROP,它可以将其设置为空DROP SMT 但是,它如何知道要删除哪个字段,而其他字段保持不变。或者 JDBC 接收器如何转换布尔值映射。有没有办法做到这一点?

标签: mysqljdbcapache-kafkaapache-kafka-connectconfluent-platform

解决方案


下面的配置会忽略您想要的字段:

“变换”:“面具”,

“transforms.mask.type”:“org.apache.kafka.connect.transforms.MaskField$Value”,

“transforms.mask.fields”:“enteredReservation”

但它可能不适用于字符串和数字以外的类型。所以,你也可以尝试加入黑名单:

“变换”:“替换字段”,

"transforms.ReplaceField.type": "org.apache.kafka.connect.transforms.ReplaceField$Value",

“transforms.ReplaceField.blacklist”:“enteredReservation”


推荐阅读