我有一个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 回答
假设您已使用,来自注册表的架构 is received
如果Connect无法访问注册表,它实际上将无法编写Avro记录
您在Kafka Connect工作器属性文件中设置注册表配置,而不是连接器本身 . (命名为connect-avro.properties,或其他东西) .
并且它被转换为通用记录,因为您的特定记录很可能不在Connect类路径上 . Connect添加的“额外非架构”数据只是元数据,但您可以禁用它
您提到的该属性实际上仅供HDFS Connect用于 Hive schema ,而不是使用Avro架构进行S3连接 . 至少,如果我回想起删除它的提交,那么该属性不是3.3.0之后的"required"
关于枚举,是的,它们被转换为字符串,并且it's actually an open issue我相信只在最新版本中得到解决(汇编4.1)
您需要设置此属性才能修复它