使用 azure 事件中心源连接器时以字节形式返回的 Avro 架构
Posted
技术标签:
【中文标题】使用 azure 事件中心源连接器时以字节形式返回的 Avro 架构【英文标题】:Avro schema returned as bytes when using azure event hub source connector 【发布时间】:2021-12-06 23:15:34 【问题描述】:我们现在正在使用 confluent 6.1.0 并尝试连接到 Azure even Hub。我们可以看到数据来了,但是当谈到模式时,它总是显示字节。谁能给我们一些关于如何解决它的想法?
"name": "eventhub_to_kafka_pullt12",
"config":
"confluent. topic. bootstrap. servers": "broker:29092",
"connector .class": "io.confluent.connect.azure.eventhubs.EventHubsSourceConnector",
" kafka . topic": "evenhubt5",
"tasks. max": "1",
"max. events": "10",
"azure. eventhubs .sas .keyname": "xxx",
"azure.eventhubs.sas.key": "xxx",
"azure.eventhubs.namespace": "xxx",
"azure.eventhubs.hub.name": "xxx",
"offsets.topic.replication.factor": "1",
"confluent.license.topic.replication.factor":"1",
"transaction.state.log.replication.factor": "1",
"key.converter": "org.apache.kafka.connect.storage.StringConverter",
"value.converter.schema.registry.url": "http://xxxx:8081",
"value.converter":"io.confluent.connect.avro.AvroConverter",
"transaction.state.log.replication.factor": "1"
我们正在使用 azure-eventhub-connector:1.2.1 并且错误:
【问题讨论】:
【参考方案1】:由于 EventHubs 与 Kafka 类似,因此记录键或值中没有可以解码形成模式的信息(例如,与数据库表相比)。因此,您需要使用ByteArrayConverter
或StringConverter
按原样消费到另一个Kafka 集群中。使用 AvroConverter 将 force 字节/字符串将模式连接到该 Avro 类型。
如果原始生产者在将数据生成到 EventHubs 时使用了 Schema Registry,那么下游(使用 Connect 之后)消费者(例如控制中心)仍然可以使用具有相同 Schema Registry 地址的 AvroDeserializer,因为字节不会改变(原始模式将保持不变,而不是“包装”在字节模式结构中)。
【讨论】:
以上是关于使用 azure 事件中心源连接器时以字节形式返回的 Avro 架构的主要内容,如果未能解决你的问题,请参考以下文章