使用Avro转换器时Kafka Connect ADLS Gen2连接器报错求助
问题描述
尝试将数据以Parquet格式写入Azure Data Lake Storage Gen2时触发错误,相关配置及错误信息如下:
格式配置
format.class: io.confluent.connect.azure.storage.format.parquet.ParquetFormat
pom.xml依赖
io.confluent
kafka-connect-avro-converter
7.2.1
kc_config.yaml配置
key.converter: io.confluent.connect.avro.AvroConverter value.converter: io.confluent.connect.avro.AvroConverter connector.class: io.confluent.connect.azure.datalake.gen2.AzureDataLakeGen2SinkConnector storage.class: io.confluent.connect.azure.datalake.gen2.storage.AzureDataLakeGen2Storage azure.datalake.gen2.account.name: ${ADLS_ACCOUNT_NAME} azure.datalake.gen2.access.key: ${AZURE_KEY}
运行错误信息
java.lang.NoSuchMethodError: io.confluent.kafka.serializers.KafkaAvroSerializerConfig.getLatestCompatibilityStrict()Z at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.configure(AbstractKafkaAvroSerializer.java:55) at io.confluent.connect.avro.AvroConverter$Serializer.<init>(AvroConverter.java:145) at io.confluent.connect.avro.AvroConverter.configure(AvroConverter.java:77) at org.apache.kafka.connect.runtime.isolation.Plugins.newConverter(Plugins.java:293) at org.apache.kafka.connect.runtime.Worker.startTask(Worker.java:446) at org.apache.kafka.connect.runtime.distributed.DistributedHerder.startTask(DistributedHerder.java:1140) at org.apache.kafka.connect.runtime.distributed.DistributedHerder.access$1700(DistributedHerder.java:125) at org.apache.kafka.connect.runtime.distributed.DistributedHerder$13.call(DistributedHerder.java:1155) at org.apache.kafka.connect.runtime.distributed.DistributedHerder$13.call(DistributedHerder.java:1151) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750)
解决方案
这个错误是Confluent组件依赖版本不兼容导致的:KafkaAvroSerializerConfig.getLatestCompatibilityStrict()方法在当前混用的版本中不存在,或依赖树中存在版本冲突。
具体解决步骤:
- 统一所有Confluent组件版本:确保
kafka-connect-avro-converter、Azure Data Lake Gen2 Sink Connector、Parquet格式组件的版本完全一致,当前使用的是7.2.1,需同步其他Confluent依赖至该版本。 - 排查依赖冲突:执行
mvn dependency:tree命令生成依赖树,找出是否有不同版本的kafka-serializers或avro-serializer被引入,排除掉低版本或不匹配的冲突依赖。 - 补充Schema Registry配置:AvroConverter必须依赖Schema Registry才能正常工作,在
kc_config.yaml中添加以下配置:key.converter.schema.registry.url: ${SCHEMA_REGISTRY_URL} value.converter.schema.registry.url: ${SCHEMA_REGISTRY_URL}
内容的提问来源于stack exchange,提问作者Hemanth Gowda
相关产品推荐
相关产品推荐

