使用 kafka s3 sink connect 时,我可以使用 schema registry 来获取 schema 吗?

Can I use schema registry to get schema when using kafka s3 sink connect?

我有一个 kafka 主题,那里的值是 avro 格式,其中模式存储在模式注册表中。

现在我想设置一个 S3 接收器,如下所示:https://docs.confluent.io/current/connect/connect-storage-cloud/kafka-connect-s3/docs/s3_connector.html#basic-example

在网页中,他们使用

schema.generator.class=io.confluent.connect.storage.hive.schema.DefaultSchemaGenerator

当我尝试重新加载生成的 .avro 数据时,我发现架构有点不同。例如,嵌套的枚举类型变成了字符串。我只能恢复 GenericRecord 而不是 SpecificRecord.

有没有办法指定模式生成器,从模式注册表中检索模式?

架构 是从注册表接收到的 假设您已经使用

format.class=io.confluent.connect.s3.format.avro.AvroFormat

如果 Connect 无法访问注册表,它实际上将无法写入 Avro 记录

您在 Kafka Connect worker 属性 文件中设置注册表配置,而不是连接器本身。 (命名为 connect-avro.properties 或其他名称)。

它被转换为通用记录,因为您的特定记录很可能不在 Connect 类路径中。 "extra non-schema" data Connect 添加的只是元数据,但您可以禁用

connect.meta.data=false 

您提到的 属性 实际上仅被 HDFS Connect 用于 Hive 模式,而不是 S3 与 Avro 模式的连接。至少,属性 不是 "required" post 3.3.0,如果我记得删除它的提交

关于枚举,是的,它们已转换为字符串,而且 it's actually an open issue 我认为仅在最新版本 (Confluent 4.1) 中得到解决

您需要设置此 属性 才能修复它

enhanced.avro.schema.support=true