【问题标题】:Kafka Connect Transformations - RegexRouter replacement topic names in lowercaseKafka Connect 转换 - 小写的 RegexRouter 替换主题名称
【发布时间】:2020-07-04 20:23:20
【问题描述】:

我们正在尝试在 Kafka Connect 中设置一个连接器 (Debezium),并通过正则表达式转换此连接器生成的所有主题名称。下面的正则表达式正在工作并检测我们想要的模式,但我们还需要创建所有小写的主题名称。

我们已经尝试将它作为 \L$1 放在替换表达式中,但它只是在我们的主题名称前打印和 L,例如 LOutbound.Policy 而不是 outbound.policy

有人知道怎么做吗?提前致谢!

这是连接器 curl 命令

curl -i -X PUT http://kafka-alpha-cp-kafka-connect:8083/connectors/kafka-bi-datacontract/config -H "Content-Type: application/json" -d '{
"name": "kafka-bi-datacontract",
"connector.class" : "io.debezium.connector.sqlserver.SqlServerConnector",
"database.hostname" : "ukdb3232123",
"database.server.name" : "ukdb3232123\\perf",
"database.port" : "12442",
"database.user" : "KafkaConnect-BI",
"database.password" : "*******",
"database.dbname" : "BeazleyIntelligenceDataContract",
"snapshot.lock.timeout.ms" : "10000000",
"table.whitelist" : "Outbound.Policy,Outbound.Section",
"database.history.kafka.bootstrap.servers" : "kafka-alpha-cp-kafka-headless:9092",
"database.history.kafka.topic": "schema-changes.bidatacontract",
"transforms": "dropTopicPrefix",
"transforms.dropTopicPrefix.type":"org.apache.kafka.connect.transforms.RegexRouter",
"transforms.dropTopicPrefix.regex":"^[^.]+.(.*)",
"transforms.dropTopicPrefix.replacement":"\\L$1"
}'

【问题讨论】:

    标签: apache-kafka apache-kafka-connect debezium


    【解决方案1】:

    \L$1\\L$1 将与 L$1 相同。

    您需要创建/查找自己的小写转换。

    一旦你这样做了,你就可以这样做

    "transforms": "dropTopicPrefix,lowertopic",
    
    "transforms.dropTopicPrefix.type":"org.apache.kafka.connect.transforms.RegexRouter",
    "transforms.dropTopicPrefix.regex":"^[^.]+.(.*)",
    "transforms.dropTopicPrefix.replacement":"$1",
    
    "transforms.lowerTopic.type":"com.example.foo.LowerCase$Topic",
    

    【讨论】:

    • 感谢这个 cricket_007 如果我们设法完成这项工作,我将探索这条路线并在此处发布。
    • @DavidGMediavilla 你设法让它工作了吗?我目前也想做同样的事情,但在我的情况下,我需要将小写字母转换为大写字母。
    • @Nomad 在这里查看如何编写自己的转换 confluent.io/blog/…
    • 如果有人想删除所有前缀([instance].[schema].[table] 到只有 [table]),这个正则表达式应该可以完成这项工作:^[^.]+.[^. ]++.(.*)
    猜你喜欢
    • 2019-04-19
    • 2019-07-08
    • 1970-01-01
    • 2020-09-02
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2020-09-09
    相关资源
    最近更新 更多