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
Mongodb 从数组到卡夫卡主题的值_Mongodb_Apache Kafka_Apache Kafka Connect - Fatal编程技术网

Mongodb 从数组到卡夫卡主题的值

Mongodb 从数组到卡夫卡主题的值,mongodb,apache-kafka,apache-kafka-connect,Mongodb,Apache Kafka,Apache Kafka Connect,我使用Kafka Connect和Mongo作为源代码。在我的例子中,我需要一行发送给消费者数据。例如,我有这样的收藏: { "_id" : "sdasd", "client_id" : "11", "device_id" : "11aa11", "contacts" : [ { &q

我使用Kafka Connect和Mongo作为源代码。在我的例子中,我需要一行发送给消费者数据。例如,我有这样的收藏:

{
    "_id" : "sdasd",
    "client_id" : "11",
    "device_id" : "11aa11",
    "contacts" : [ 
        {
            "contact_id" : "1",
            "contact_name" : "FirstName LastName",
            "contact_numbers" : [ 
                {
                    "contact_num" : "+4912222222",
                }
            ]
        },
        {
            "contact_id" : "2",
            "contact_name" : "FirstName2 LastName2",
            "contact_numbers" : [ 
                {
                    "contact_num" : "+4911111111",
                }
            ]
        }
    ]
}
我将连接器配置为

curl -X POST -H "Content-Type: application/json" --data '
  {"name": "mongo-source-contacts",
   "config": {
     "tasks.max":"1",
     "connector.class":"com.mongodb.kafka.connect.MongoSourceConnector",
     "output.format.value":"schema",
     "output.schema.value":"{\"name\":\"MongoExchangeSchema\",\"type\":\"record\",\"namespace\":\"com.mongoexchange.avro\",\"fields\":[{\"name\": \"client_id\",\"type\": \"string\"},{\"name\": \"device_id\",\"type\": \"string\"}, {\"name\": \"contacts.contact_name\",\"type\": \"string\"}]}",
     "schema.compatibility": "NONE",
     "key.converter":"org.apache.kafka.connect.storage.StringConverter",
     "value.converter":"io.confluent.connect.avro.AvroConverter",
     "value.converter.schema.registry.url":"http://localhost:8081",
     "connection.uri":"mongodb://localhost:27017/replicaSet=globaldb",
     "publish.full.document.only": true,
     "topic.prefix":"t_cb",
     "topic.creation.default.partitions"        : 4,
     "topic.creation.default.replication.factor": 1,
     "database":"testdb",
     "collection":"contactbook_test"
}}' http://localhost:8083/connectors -w "\n"
在output.schema.value中,我读取所需的字段。是否可以将主题中的数据作为每个键的记录获取?例如,此字段的值: 11 11aa11 FirstName LastName+491222222 但现在我明白了
客户端id、设备id和带有联系人的阵列。谢谢大家的关注

我不确定我是否理解这个问题。您有一条记录
“\u id”
。Mongo连接器不会解析更多内容来“深入”特定字段,更不用说只获取数组中的键/值了。也就是说,您的输出值模式应该与集合匹配,并包含数组类型。值得指出的是,点在Avro字段名称中无效


如果您想将数组展平为多个联系人对象,自己使用连接数据,并使用Kafka Streams(例如)将数据写入另一个主题

我的问题是,每个联系人id条目是否可以使用客户端id和设备id单独写入一行?您说的“单独行”是什么意思?如果你是指单独的记录,那么不,你需要一个辅助进程将该数组拉入单独的对象中,这就是我想知道的。谢谢!