Кафка коннект - Трансформеры - Черный список вложенного поля - PullRequest
0 голосов
/ 31 октября 2019

Можно ли удалить вложенное поле с помощью SMT с подключением Kafka?

Я знаю, что следующее прекрасно работает:

"transforms": "ReplaceField",
"transforms.ReplaceField.type": "org.apache.kafka.connect.transforms.ReplaceField$Value",
"transforms.ReplaceField.blacklist": "FieldFoo"

Но это не работает (при условии, что вложенное полеfoo-> bar):

"transforms": "ReplaceField",
"transforms.ReplaceField.type": "org.apache.kafka.connect.transforms.ReplaceField$Value",
"transforms.ReplaceField.blacklist": "FieldFoo.NestedFieldBar",

Мои данные в формате avro.

Я не хочу изменять сами данные (например, выравнивать все), чтобы иметь возможность это сделать. В любом случае?

1 Ответ

1 голос
/ 31 октября 2019

Все (или, по крайней мере, большинство) из Kafka Connect Transforms работают только на полях верхнего уровня через .get и .put вызовы на Struct или Map<String, ?>

. Вы можете проверитьисточник здесь -

https://github.com/apache/kafka/blob/2.3/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/ReplaceField.java#L150-L163

Я бы предложил поискать / открыть JIRA (и KIP), потому что это давняя проблема, IMO

Проблема, однако,было бы то, что "FieldFoo.NestedFieldBar" является действительной строкой сама по себе, поэтому трудно провести различие между этими опциями без дополнительных символов, таких как обратные тики или подход, подобный KSQL, FieldFoo->NestedFieldBar

"FieldFoo.NestedFieldBar": "value" 

и

"FieldFoo" : { 
  "NestedFieldBar": "value"
}
...