【问题标题】:Kafka connect transforms (SMT) - Help to resolve the use caseKafka 连接转换 (SMT) - 帮助解决用例
【发布时间】:2019-08-02 06:16:57
【问题描述】:

我有一个用例,我想使用 kafka 源或接收器连接器将源表键字段映射到目标表引用字段。

我是这个论坛的新手,如果我缺少任何信息,请告诉我。提前致谢!

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    您应该使用:org.apache.kafka.connect.transforms.ReplaceField$Value 转换

    带有转换的配置部分应如下所示:

    {
        ...
        "transforms": "RenameField",
        "transforms.RenameField.type": "org.apache.kafka.connect.transforms.ReplaceField$Value",
        "transforms.RenameField.renames": "SRC_ID:SRC_REF_ID"
        ...
    }
    

    如果您的列 SRC_ID 是 Int 类型,您可能还需要转换为 String。为此,您可以使用:org.apache.kafka.connect.transforms.Cast

    有关默认转换的更多详细信息可以找到:https://kafka.apache.org/documentation/#connect_transforms

    【讨论】:

    • 非常感谢您的快速响应 - wardziniak !!!.. 是的,它按预期工作。我删除了目标表并使用具有 NUMBER 数据类型的 SRC_REF_ID 列重新创建,并按照您的建议使用了 ReplaceField 转换,并按预期工作。太好了!...我的问题已解决,但我还有其他问题。如果我的用例仍然保留目标表中的所有源字段,但想在目标表中添加新字段,该字段应该将从 SRC_ID 字段复制的值复制到 SRC_REF_ID 字段,我该怎么做?感谢您的回复!..
    • @JamesMark,默认转换不支持克隆/复制字段值。您只能更改名称,但不能创建具有相同值的新字段。为此,您必须创建自己的转换,可以找到示例:github.com/wardziniak/kafka-war-transform
    • 感谢 wardziniak 的回复!.. 我了解 SMT 的限制并编写自定义转换。我查看了您的代码,但看起来它是在我不知道的 scala 上编写的。
    • 嗨,wardziniak,是的,你已经回答了我的问题,它也解决了我的问题。我已标记为已回答。由于我是这个论坛的新手,如果我做得不好,请告诉我。
    • @wardziniak-我们如何在源连接器中提及主题名称?我已经创建了具有 3 个分区的主题,我想在源连接器中提及现有主题,并查看默认情况下消息将发送到哪个分区。然后正如您在其他帖子中建议的那样,我想使用自定义逻辑覆盖分区分配。你可以在这里看到我的其他帖子:stackoverflow.com/questions/55188508/…
    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    相关资源
    最近更新 更多