首页 文章

使用kafka s3 sink connect时,我可以使用模式注册表来获取模式吗?

提问于
浏览
0

我有一个kafka主题,其值为avro格式,其中架构存储在架构注册表中 .

现在我想设置一个S3 Sink,如下: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 .

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

1 回答

  • 2

    假设您已使用,来自注册表的架构 is received

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

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

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

    并且它被转换为通用记录,因为您的特定记录很可能不在Connect类路径上 . Connect添加的“额外非架构”数据只是元数据,但您可以禁用它

    connect.meta.data=false
    

    您提到的该属性实际上仅供HDFS Connect用于 Hive schema ,而不是使用Avro架构进行S3连接 . 至少,如果我回想起删除它的提交,那么该属性不是3.3.0之后的"required"

    关于枚举,是的,它们被转换为字符串,并且it's actually an open issue我相信只在最新版本中得到解决(汇编4.1)

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

    enhanced.avro.schema.support=true
    

相关问题