Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Kafka Connect JDBC连接器tinyint到布尔映射_Mysql_Jdbc_Avro_Apache Kafka Connect_Ksqldb - Fatal编程技术网

Mysql Kafka Connect JDBC连接器tinyint到布尔映射

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作业,配置为定期查询MySQL表并将消息放入队列。这些消息的结构是使用Avro模式定义的。我的一个列的映射有问题

在我的MySQL模式中,该列被定义为一个tinyint(1),我试图将其映射到我的avro对象中的一个布尔字段

{
“名称”:“是否处于活动状态”,
“类型”:“布尔”
}

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
----------------------------------------