kafka smt valuetokey-如何使用多个值作为键?

jjjwad0x  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(444)

我使用汇合jdbcsourceconnector从oracle表中读取数据。我正在尝试使用smt生成一个由3个串联字段组成的密钥。

transforms=createKey
transforms.createKey.type=org.apache.kafka.connect.transforms.ValueToKey
transforms.createKey.fields=BUS_OFC_ID_CD,SO_TYPE,SO_NO

通过上面的转换,我得到如下结果:

{"BUS_OFC_ID_CD":"111","SO_TYPE":"I","SO_NO":"55555"}

我想要这样的东西:

111I55555

你知道我怎么把这些值连起来吗?

des4xlb0

des4xlb01#

我无法在属性文件中解决上述问题。所以,解决方法是:
创建一个视图(为了让mode=timestamp与我们的oracledb一起工作,我们已经这样做了)
添加一个额外的字段,其中包含keyname的串联值
提取要用作键的串联值。
例如:

CREATE VIEW XX_TEST_V AS 
SELECT BUS_OFC_ID_CD, SO_TYPE, SO_NO, BUS_OFC_ID_CD||SO_TYPE||SO_NO as KEYNAME 
FROM XX_TEST;

这将给您一个

{"KEYNAME ":"111I55555"}

去掉json只保留文本,然后在属性文件中完成
例如:

transforms=createKey,extractString
transforms.createKey.type=org.apache.kafka.connect.transforms.ValueToKey
transforms.createKey.fields=KEYNAME
transforms.extractString.type=org.apache.kafka.connect.transforms.ExtractField$Key
transforms.extractString.field=KEYNAME

这应该给你以下的关键

"111I55555"

向彼得问好

相关问题