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下。
对新手有什么想法吗?失败了,关于如何调试的一些提示?
答案 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)。