Тема на основе соединителя Kafka debezium mysql: для потоков и таблиц ksql все значения столбцов заканчиваются «нулевыми»

Соединитель Debezium MySQL настроен и работает правильно, но когда я создаю поток или таблицу в KSQL на основе темы, все значения столбцов возвращаются как нулевые.

Я знаю, что разъем в основном работает, потому что...

$ confluent consume dbbi.bi.clients --value-format avro --from-beginning

... предоставляет прекрасный список клиентов в консоли (здесь не показан, но он правильно отформатирован в формате json с ожидаемыми значениями). Далее пробую создать таблицу (или поток - не важно) в ksql:

CREATE TABLE tbl_clients (id, appname STRING) WITH (KAFKA_TOPIC='dbbi.bi.clients', VALUE_FORMAT='AVRO', KEY='id');

Результат:

ksql> select * from tbl_clients;
1563267463214 | [f | null | null
1563267463214 | [h | null | null
1563267463214 | [j | null | null
1563267463214 | [l | null | null
1563267463214 | [n | null | null
1563267463214 | [p | null | null
1563267463214 | [r | null | null
1563267463214 | [t | null | null
1563267463214 | [v | null | null
1563267463214 | [x | null | null
1563267463214 | [z | null | null
1563267463214 | [| | null | null
1563267463214 | [~ | null | null
1563286302233 | [� | null | null

Неважно, какие поля выбраны для таблицы (или потока). Неважно, какая таблица (тема) используется. Значение всех столбцов всегда равно нулю. Излишне говорить, что значения в базе данных не равны нулю.

И последняя деталь: все это находится в Confluent 5.2.2 и Debezium mysql Connector 0.9.4.

Есть идеи для новичка? В противном случае, некоторые подсказки о том, как отлаживать?


person user1095226    schedule 16.07.2019    source источник
comment
Опечатка выше: CREATE TABLE tbl_clients (id BIGINT, appname STRING) WITH (KAFKA_TOPIC='dbbi.bi.clients', VALUE_FORMAT='AVRO', KEY='id');   -  person user1095226    schedule 16.07.2019


Ответы (1)


не забывайте, что Debezium отправляет сложное сообщение, содержащее значения до/после и информацию об источнике — см. https://debezium.io/docs/connectors/mysql/#change-events-value

Чтобы преобразовать его в формат, пригодный для использования ksql, вам необходимо извлечь значение after — см. https://debezium.io/docs/configuration/event-flattening/

Более старое описание (хотя и для JSON) можно найти в блоге Debezium — https://debezium.io/blog/2018/05/24/querying-debezium-change-data-eEvents-with-ksql/

person Jiri Pechanec    schedule 17.07.2019