Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Apache kafka 使用JSONConverter的Kafka connect MongoDB Kafka连接器不工作_Apache Kafka_Apache Kafka Connect - Fatal编程技术网

Apache kafka 使用JSONConverter的Kafka connect MongoDB Kafka连接器不工作

Apache kafka 使用JSONConverter的Kafka connect MongoDB Kafka连接器不工作,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,我正在尝试配置Kafka连接器以使用mongoDB作为源,并将记录发送到Kakfa主题中。 我已经成功地做到了这一点,但我正在尝试使用JSONConverter来实现这一点,以便还使用有效负载保存模式 我的问题是连接器正在按如下方式保存数据: { "schema": { "type": "string" } , "payload": "{....}" } 换句话说,它自动假设实际的JSON是一个字符串,并将模式保存为字符串 以下是我设置连接器的方式: curl -X POST http://l

我正在尝试配置Kafka连接器以使用mongoDB作为源,并将记录发送到Kakfa主题中。 我已经成功地做到了这一点,但我正在尝试使用JSONConverter来实现这一点,以便还使用有效负载保存模式

我的问题是连接器正在按如下方式保存数据:

{ "schema": { "type": "string" } , "payload": "{....}" }
换句话说,它自动假设实际的JSON是一个字符串,并将模式保存为字符串

以下是我设置连接器的方式:

curl -X POST http://localhost:8083/connectors -H "Content-Type: application/json" -d '{
 "name": "newtopic",
 "config": { 
"tasks.max":1,
 "connector.class":"com.mongodb.kafka.connect.MongoSourceConnector", 
 "key.converter":"org.apache.kafka.connect.json.JsonConverter", 
 "key.converter.schemas.enabled": "true",
 "value.converter":"org.apache.kafka.connect.json.JsonConverter", 
 "value.converter.schemas.enabled": "true",
 "connection.uri":"[MONGOURL]", 
 "database":"dbname", 
 "collection":"collname", 
 "pipeline":"[]", 
 "topic.prefix": "", 
 "publish.full.document.only": "true" 
 }}'

我是否缺少配置的某些内容?难道它就是不能猜测MongoDB中存储的文档的模式,所以它使用字符串吗?

没有什么可以猜测的。Mongo是无模式的,上次我检查时,模式是字符串或字节。我建议使用AvroConverter或将schema enabled设置为false


您可能还想尝试使用Debezium,看看是否得到不同的结果

没有什么可猜测的。Mongo是无模式的,上次我检查时,模式是字符串或字节。我建议使用AvroConverter或将schema enabled设置为false

您可能还想尝试使用Debezium来查看是否得到不同的结果

最新的MongoDB连接器应该可以解决此问题。
它甚至提供了一个推断源模式的选项。

最新的MongoDB连接器应该可以解决这个问题。

它甚至提供了一个推断源模式的选项。

注意:Kafka Connect不是Confluent特有的。没有融合的卡夫卡诺:卡夫卡连接不是融合特有的。回复中没有融合的KafkaThanks,有几条评论:1-我知道mongo是无模式的,我觉得连接器会从提交的文档中推断模式。2-Debezium不是一个选项,因为confluent连接器具有我需要的一些功能。3-我需要模式,Avro使用pyspark API无法访问的模式注册表。1-有什么可以推断的?我以前从未将Mongo与模式一起使用过。。。2-Confluent未开发Mongo源连接器。Mongo公司确实。。。3-pyspark确实提供了Avro/schema注册表,我以前做过。感谢您的回复,我有几点意见:1-我知道mongo是无模式的,我觉得连接器会从提交的文档中推断出模式。2-Debezium不是一个选项,因为confluent连接器具有我需要的一些功能。3-我需要模式,Avro使用pyspark API无法访问的模式注册表。1-有什么可以推断的?我以前从未将Mongo与模式一起使用过。。。2-Confluent未开发Mongo源连接器。Mongo公司确实。。。3-确实可以从pyspark获得Avro/schema注册表,我以前做过