You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Kafka Connect Transforms提取嵌套列表最后元素

解决方案

要提取JSON嵌套数组的最后一个元素并生成目标消息,你需要调整Kafka Connect的SMT(Single Message Transforms)配置,结合多个内置Transform来完成。以下是完整的配置方案:

完整Transforms配置片段

"transforms": "deserializaJson,extractLastAddress,hoistAddress,cleanupFields",
"transforms.deserializaJson.type": "com.couchbase.connect.kafka.transform.DeserializeJson",

// 提取address数组的最后一个元素
"transforms.extractLastAddress.type": "org.apache.kafka.connect.transforms.ValueFromArray$Value",
"transforms.extractLastAddress.field": "address",
"transforms.extractLastAddress.index": "-1", // 使用-1表示取数组最后一个元素

// 将提取到的地址对象重命名为selectedAddress并提升为顶级字段
"transforms.hoistAddress.type": "org.apache.kafka.connect.transforms.HoistField$Value",
"transforms.hoistAddress.field": "selectedAddress",

// 移除不需要的字段(age和原始address字段)
"transforms.cleanupFields.type": "org.apache.kafka.connect.transforms.ReplaceField$Value",
"transforms.cleanupFields.blacklist": "age,address"

配置说明

  • deserializaJson:保持你原有的Couchbase JSON反序列化配置,将数据库文档转为Kafka Connect可处理的结构化数据。
  • extractLastAddress:使用ValueFromArray Transform,指定address字段为目标数组,通过index=-1提取最后一个元素。
  • hoistAddress:使用HoistField将提取到的地址对象包装为顶级字段selectedAddress。
  • cleanupFields:使用ReplaceField的黑名单模式,移除不需要的age和原始address字段,得到你期望的消息结构。

注意事项

  • 确保你的Kafka Connect环境支持ValueFromArray Transform(该Transform从Kafka Connect 2.6.0版本开始内置)。
  • 如果你的Kafka Connect版本较低,可考虑使用社区维护的Transform插件,配置逻辑类似。

内容的提问来源于stack exchange,提问作者ceb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:40:28