Mysql Kafka Connect JDBC连接器tinyint到布尔映射
我有一个Kafka Connect作业,配置为定期查询MySQL表并将消息放入队列。这些消息的结构是使用Avro模式定义的。我的一个列的映射有问题 在我的MySQL模式中,该列被定义为一个tinyint(1),我试图将其映射到我的avro对象中的一个布尔字段Mysql Kafka Connect JDBC连接器tinyint到布尔映射,mysql,jdbc,avro,apache-kafka-connect,ksqldb,Mysql,Jdbc,Avro,Apache Kafka Connect,Ksqldb,我有一个Kafka Connect作业,配置为定期查询MySQL表并将消息放入队列。这些消息的结构是使用Avro模式定义的。我的一个列的映射有问题 在我的MySQL模式中,该列被定义为一个tinyint(1),我试图将其映射到我的avro对象中的一个布尔字段 { “名称”:“是否处于活动状态”, “类型”:“布尔” } kafka connect作业运行,消息被放置在队列上,但当从队列读取的应用程序尝试反序列化消息时,我收到以下错误: org.apache.avro.AvroTypeExcep
{
“名称”:“是否处于活动状态”,
“类型”:“布尔”
}
kafka connect作业运行,消息被放置在队列上,但当从队列读取的应用程序尝试反序列化消息时,我收到以下错误:
org.apache.avro.AvroTypeException: Found int, expecting boolean
我希望1或0值可以自动映射到布尔值,但事实似乎并非如此
我还尝试将我的作业配置为使用“Cast”转换,但这似乎只会导致消息中的其他字段出现问题
“转换”:“转换”,
“transforms.Cast.type”:“org.apache.kafka.connect.transforms.Cast$Value”,
“transforms.Cast.spec”:“是否处于活动状态:布尔值”
我正在尝试的是可能的,还是必须更改我的应用程序才能使用int值
这是我的完整配置(我去掉了一些其他不相关的字段)
卡夫卡连接作业配置
{
“connector.class”:“io.confluent.connect.jdbc.JdbcSourceConnector”,
“模式”:“批量”,
“topic.prefix”:“我的主题名”,
“transforms.SetSchemaMetadata.type”:“org.apache.kafka.connect.transforms.SetSchemaMetadata$Value”,
“查询”:“从我的表格中选择处于活动状态”,
“poll.interval.ms”:“30000”,
“转换”:“SetSchemaMetadata”,
“名称”:“工作名称”,
“connection.url”:“connectiondetailshere”,
transforms.SetSchemaMetadata.schema.name:“com.my.model.name”
}
AVRO模式
{
“类型”:“记录”,
“名称”:“名称”,
“名称空间”:“com.my.model”,
“字段”:[
{
“名称”:“是否处于活动状态”,
“类型”:“长”
}
],
“connect.name”:“com.my.model.name”
}
您可以使用(这是一个完美的用例),或者编写一个简单的流式应用程序来实现这一点,例如在KSQL中:
CREATE STREAM my_topic AS
SELECT COL1, COL2, …
CASE WHEN is_active=1 THEN TRUE ELSE FALSE END AS is_active_bln
FROM my_source_connect_topic;
强制转换的错误是什么?我现在还没有得到确切的错误,但是它导致了我的模式中其他字段类型的问题,这些字段似乎是强制转换的,尽管我没有在“transforms.cast.spec”中指定它们,这听起来像是保留字问题。您是否将
查询
作为字段名?然后把``放在像`查询`一样的封面上。另外,如果您有一个大的ksql,那么删除ksql的一些部分并使用小部分进行测试就很简单了,比如数据库开发人员调试queryNo I没有查询作为字段名。is_active字段是我正在添加的一个新字段,因此我知道其他所有操作都有效。这个问题是针对这个新领域的,从文档中我了解到,转换可以通过Cast完成,或者是什么让它无法工作?
ksql> describe my_topic;
Name : my_topic
Field | Type
-----------------------------------------
ROWTIME | BIGINT (system)
ROWKEY | VARCHAR(STRING) (system)
COL1 | INTEGER
COL1 | VARCHAR
IS_ACTIVE_BLN | BOOLEAN
----------------------------------------