繁体   English   中英

从数组到 Kafka 主题的值

[英]Values from array to Kafka Topic

我使用带有 Mongo 的 Kafka Connect 作为源。 就我而言,我需要将数据连续发送给消费者。 例如 - 我有这样的集合:

{
    "_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 +4912222222 但现在我得到了 client_id、device_id 和带有联系人的数组。 感谢关注!

我不确定我是否理解这个问题。 你有一个记录"_id" Mongo 连接器不会解析更多内容以“深入”到特定字段,更不用说只获取数组中的键/值。 话虽如此,您的 output 值模式应该与集合匹配并包含数组类型。 值得指出的是,点在 Avro 字段名称中无效

如果要将数组扁平化为多个联系人对象,请自行使用 Connect 数据,并将数据写入另一个主题,例如使用 Kafka Streams

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM