Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 如何设置JDBC源连接器(kafka)的密钥?_Mysql_Apache Kafka Connect - Fatal编程技术网

Mysql 如何设置JDBC源连接器(kafka)的密钥?

Mysql 如何设置JDBC源连接器(kafka)的密钥?,mysql,apache-kafka-connect,Mysql,Apache Kafka Connect,我正在使用Kafka源JDBC连接器从数据库表中读取数据,并将其发布到主题testmysql-petai 数据库表有两个字段,其中Id是主键: +---------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+--------

我正在使用
Kafka源JDBC连接器从数据库表中读取数据,并将其发布到主题
testmysql-petai

数据库表有两个字段,其中
Id
是主键:

+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int(11)     | NO   | PRI | NULL    | auto_increment |
| name    | varchar(20) | YES  |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+
我需要
id
字段的值作为主题的键。我尝试向jdbc连接器属性添加转换

JDBCConnector.properties:

name=jdbc-source-connector    
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1   
connection.url=jdbc:mysql://127.0.0.1:3306/test?user=dins&password=pw&serverTimezone=UTC
table.whitelist=petai 
mode=incrementing
incrementing.column.name=id    
schema.pattern=""    
transforms=createKey,extractInt    
transforms.createKey.type=org.apache.kafka.connect.transforms.ValueToKey    
transforms.createKey.fields=id    
transforms.extractInt.type=org.apache.kafka.connect.transforms.ExtractField$Key    
transforms.extractInt.field=id    
topic.prefix=test-mysql-jdbc-
但是,当我使用消费者读取键和值时,我得到以下信息:

Key = {"schema":{"type":"int32","optional":false},"payload":61} 
Value ={"id":61,"name":"ttt"}
Key = 61    
Value ={"id":61,"name":"ttt"}
我需要得到以下信息:

Key = {"schema":{"type":"int32","optional":false},"payload":61} 
Value ={"id":61,"name":"ttt"}
Key = 61    
Value ={"id":61,"name":"ttt"}
我做错了什么?感谢您的帮助


谢谢。

如果您不想在密钥中包含架构,可以通过设置
key.converter.schemas.enable=false来告诉Kafka Connect


有关详细说明,请参见。

您如何消费mesages?请提供以下属性:
key.converter
value.converter
key.converter.schemas.enable
value.converter.schemas.enable
@IskuskovAlexander。为了测试这一点,我使用了卡夫卡附带的默认kafka-console-consumer.sh脚本
bin/kafka-console-consumer.sh--引导服务器localhost:9092--主题测试mysql jdbc petai--从一开始
在运行脚本时没有传递任何其他参数。我需要添加您提到的吗?尝试设置
“key.converter.schemas.enable”:“false”
我尝试了,但仍然得到了相同的结果。它正在工作。:)除了你提到的,它还需要你在第一次提到的其他属性
key.converter=org.apache.kafka.connect.json.JsonConverter key.converter.schemas.enable=false value.converter=org.apache.kafka.connect.json.JsonConverter value.converter.schemas.enable=false
同样,正如您所说的,它只是更改新消息的密钥,即使我再次运行了消费者。我可以知道为什么吗?