csvSftpConnector配合schema registry使用运行报错求助
问题原因与解决方案
错误原因
第一个配置校验错误
Confluent SFTP CSV Source 连接器的原生校验逻辑要求:当schema.generation.enabled设置为false时,必须显式配置key.schema和value.schema两个参数,该校验在连接器和Schema Registry交互前执行,和Schema Registry的配置无关,因此留空value.schema会直接触发报错。
第二个空Schema与兼容性报错
开启schema.generation.enabled后生成空Schema,是因为你配置了csv.first.row.as.header = false,连接器无法从CSV中读取字段名,只能生成空的结构体Schema。该空Schema与你在Confluent Cloud上预先定义的Schema不兼容,且Avro转换器默认开启自动注册Schema逻辑,因此触发Schema Registry的409兼容性错误。
解决步骤
- 修正CSV解析配置
如果你的CSV文件第一行是字段表头,先修改配置:
csv.first.row.as.header = true
如果CSV没有表头,需要通过csv.schema参数手动指定CSV的字段顺序与类型,保证连接器能正确解析出所有字段,生成完整的内部数据结构。
2. 配置Avro转换器禁用自动注册,强制拉取已有Schema
在连接器配置中新增以下Avro转换器参数,禁止转换器自动注册Schema,强制使用Schema Registry中对应subject的最新版本:
# Key 序列化配置 key.converter=io.confluent.connect.avro.AvroConverter key.converter.schema.registry.url=你的Confluent Cloud Schema Registry地址 key.converter.basic.auth.credentials.source=USER_INFO key.converter.basic.auth.user.info=你的Schema Registry API Key:API Secret key.converter.auto.register.schemas=false key.converter.use.latest.version=true # Value 序列化配置 value.converter=io.confluent.connect.avro.AvroConverter value.converter.schema.registry.url=你的Confluent Cloud Schema Registry地址 value.converter.basic.auth.credentials.source=USER_INFO value.converter.basic.auth.user.info=你的Schema Registry API Key:API Secret value.converter.auto.register.schemas=false value.converter.use.latest.version=true
注意:必须保证连接器从CSV解析出的字段名、字段类型、字段顺序和你在Schema Registry中
testSchema-value主题对应的Schema完全匹配,否则会触发序列化错误。
- 调整连接器Schema生成配置
保持schema.generation.enabled = true,确保连接器能基于CSV内容生成完整的内部Schema,用于和Schema Registry的预定义Schema匹配。
如果不想开启自动生成,也可以直接将你在Schema Registry中的Avro Schema转换为连接器要求的value.schema格式填写,配合schema.generation.enabled = false使用,也可绕过初始校验。
内容的提问来源于stack exchange,提问作者Alberto Pires
相关产品推荐
相关产品推荐

