基于Kafka Debezium mysql连接器的主题:对于ksql流和表,所有列值都以'null'结尾

时间:2019-07-16 16:17:48

标签: mysql connector debezium

Debezium MySQL连接器似乎已配置并正常工作,但是当我基于主题在KSQL中构造流或表时,所有列值都将返回为null。

我知道连接器基本上可以正常工作,因为...

$ 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

为表(或流)选择了哪些字段都没有关系。使用哪个表(主题)都没有关系。所有列的值始终为null。不用说,数据库中的值是 not null。

最后一个细节:这全部在Confluent 5.2.2和Debezium mysql连接器0.9.4下。

对新手有什么想法吗?失败了,关于如何调试的一些提示?

1 个答案:

答案 0 :(得分:0)

请不要忘记Debezium发送的复杂消息包含之前/之后的值和源信息-请参见https://debezium.io/docs/connectors/mysql/#change-events-value

要将其转换为ksql可使用的格式,您需要对after值进行求和-参见https://debezium.io/docs/configuration/event-flattening/

在Debezium博客-https://debezium.io/blog/2018/05/24/querying-debezium-change-data-eEvents-with-ksql/

中可以找到更旧的描述(尽管是JSON)。