#apache-kafka #apache-kafka-connect
#apache-kafka #apache-kafka-connect
Вопрос:
Предположим, что я хочу настроить исходный соединитель Kafka для перекачки некоторых данных из моей базы данных в мою Kafka. Теперь предположим, что из соображений безопасности я хочу обфускировать (скажем, применить хэш-функцию) к некоторым столбцам в моей БД. Есть ли стандартный способ сделать это с помощью Kafka Connect, или мне нужно сначала создать частные темы, а затем написать пользовательский код для создания общедоступных версий этих тем (с хешированными значениями для конфиденциальных данных)?
Я знаю, что есть такая вещь, как преобразования (MaskField и т. Д.), Но ни одно из них, похоже, не решает мою проблему. Например, MaskField делает что-то вроде 1-234-567-8987 -> «—****», чего я не хочу, потому что я все еще хочу иметь разные записи для разных входных значений.
Ответ №1:
Kafka Connect позволяет очень удобно писать собственное преобразование одного сообщения (SMT). Если ни одно из преобразований по умолчанию не служит вашей цели, вы можете создать пользовательский преобразователь.
В этом блоге объясняется, как создать свой собственный, вместе с полным примером, представленным на GitHub:
Вам необходимо реализовать Transformation<R>
и переопределить apply()
метод с помощью вашего пользовательского алгоритма для обработки личных данных.
Когда вы компилируете этот код как JAR и делаете его доступным для Kafka Connect через plugin.path
указанный в файле свойств Connect worker, преобразования можно настроить в свойствах соединителя.