使用 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 类似,因此记录键或值中没有可以解码形成模式的信息(例如,与数据库表相比)。因此,您需要使用ByteArrayConverterStringConverter 按原样消费到另一个Kafka 集群中。使用 AvroConverter 将 force 字节/字符串将模式连接到该 Avro 类型。

如果原始生产者在将数据生成到 EventHubs 时使用了 Schema Registry,那么下游(使用 Connect 之后)消费者(例如控制中心)仍然可以使用具有相同 Schema Registry 地址的 AvroDeserializer,因为字节不会改变(原始模式将保持不变,而不是“包装”在字节模式结构中)。

【讨论】:

以上是关于使用 azure 事件中心源连接器时以字节形式返回的 Avro 架构的主要内容,如果未能解决你的问题,请参考以下文章

具有事件中心输入流位置的 Azure 流分析

Azure 事件中心 python 中 SAS 令牌的连接字符串

Azure 事件中心的 HTTPS 端点

Steam 分析的非 Azure 输入/源选项

为啥 Azure 事件中心订阅者不起作用?

Azure 事件中心 - 虚拟网络集成 - 限制阅读