Kafka Connect сглаживает преобразование записи postgres с полем массива - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть postgres БД, подключенная к Kafka с помощью Kafka Connect, чтобы поместить события CD C в топи c. Мы используем плоское преобразование как часть общей конфигурации:

flattenKey:  "org.apache.kafka.connect.transforms.Flatten$Key"

Один из столбцов в таблице имеет тип ARRAY , и поэтому при попытке применить преобразование я получаю исключение :

Flatten transformation does not support ARRAY for record without schemas (for field after.role_ids).

Ссылка Kafka connect: https://github.com/a0x8o/kafka/blob/master/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/Flatten.java#L246

Я понимаю, что массивы нельзя сплющивать и почему, мой вопрос - есть ли способ, которым я может как-то сохранить сглаживание записи, но преобразовать / преобразовать массив каким-либо образом, чтобы я все еще мог его использовать?

массив будет содержать целые числа, поэтому преобразовать его в строку, где все элементы разделены запятые, например, сделать трюк для меня. Любое другое предложение будет отличным.

Мы используем Debezium для конфигурации.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Если вы используете Debezium 1.1 или более позднюю версию, я бы предложил использовать специальный преобразователь столбцов вместо SMT. Конвертеры позволяют настраивать схему и значение прямо в самом Debezium, поэтому «преобразование его в строку, в которой все элементы разделены запятыми», будет выполнено с небольшим количеством кода.

0 голосов
/ 22 апреля 2020

Вам потребуется написать собственный код, чтобы справиться с этим, либо как пользовательское преобразование одиночного сообщения , либо как потоковый процессор в чем-то вроде Kafka Streams.

Вы также можете оставить комментарий / upvote по этой проблеме , чтобы добавить поддержку функции, которая поможет с этим, в ksqlDB.

...