我读到了kafka 0.10.2.1中引入的Kafka连接转换 https://kafka.apache.org/documentation/#connect_transforms
我注意到所有转换都是基于列的转换。 我有一个用例,我需要基于值的过滤。例如:
考虑一组人的以下数据集:
{"firstName": "FirstName1", "lastName": "LastName1", "age": 30}
{"firstName": "FirstName2", "lastName": "LastName2", "age": 30}
{"firstName": "FirstName3", "lastName": "LastName1", "age": 60}
{"firstName": "FirstName4", "lastName": "LastName2", "age": 60}
我希望我的工作人员过滤掉lastName为LastName2的所有记录
是否可以使用kafka-connect或者我需要为此用例编写单独的程序。
由于
答案 0 :(得分:2)
没有理由不通过单个消息转换来解决这个问题 - 但是您需要编写自定义消息,因为您所描述的内容无法通过当前发送的转换获得。
这是一个有用的讨论,关于何时使用和不使用SMT:Kafka Summit New York 2017 : Single Message Transformations Are Not the Transformations You’re Looking For (Ewen Cheslack-Postava, Confluent)
答案 1 :(得分:0)
Debezium 1.2附带了一个现成的filtering SMT。它允许使用任何与JSR 223兼容的脚本语言来过滤掉记录,例如像这样:
transforms=filter
transforms.filter.type=io.debezium.transforms.Filter
transforms.filter.language=jsr223.graal.js
transforms.filter.condition=value.lastName == 'LastName2'
请注意,虽然它是Debezium的一部分,但您可以根据需要单独使用该SMT。