Kafka S3 Connector转Parquet写入MinIO启动失败排查
问题分析与解决办法
一、缺失的依赖包
报错io.confluent.connect.avro.AvroConverter找不到,核心原因是缺了Confluent Avro Converter的相关依赖。S3连接器写Parquet格式时,必须依赖Avro序列化组件完成数据转换,你只放置了s3-connector本身的jar包,没安装它依赖的配套组件。
需要补充这些和s3-connector 10.1.0版本匹配的jar包:
kafka-connect-avro-converter-10.1.0.jaravro-1.11.x.jar(对应Confluent 10.1.0的Avro版本)kafka-schema-registry-client-10.1.0.jarcommon-config-10.1.0.jar、common-utils-10.1.0.jar(Confluent通用工具包)
这些包可以从Confluent的Maven仓库下载,或者直接下载对应版本的Confluent Platform完整包,提取里面的相关jar丢到/plugins/lib目录即可。
二、必须调整的配置
1. 替换Converter并部署Schema Registry
原来用JSON格式时可能用的是org.apache.kafka.connect.json.JsonConverter,改Parquet后必须把key/value的Converter换成Avro Converter,而且必须单独部署Schema Registry服务——Avro Converter依赖它管理数据Schema,你之前的Docker Compose里没有这个服务,得加上。
连接器配置要这么改:
key.converter=io.confluent.connect.avro.AvroConverter key.converter.schema.registry.url=http://schema-registry:8081 value.converter=io.confluent.connect.avro.AvroConverter value.converter.schema.registry.url=http://schema-registry:8081
Docker Compose里新增Schema Registry服务的示例:
schema-registry: image: confluentinc/cp-schema-registry:7.3.0 # 和s3-connector 10.1.0对应的Confluent版本是7.3.x hostname: schema-registry depends_on: - kafka-broker environment: SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka-broker:9092 SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
同时在Kafka Connect的环境变量里加入Converter配置:
CONNECT_KEY_CONVERTER: io.confluent.connect.avro.AvroConverter CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081 CONNECT_VALUE_CONVERTER: io.confluent.connect.avro.AvroConverter CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081
2. 指定Parquet输出格式
在连接器配置里明确设置输出格式为Parquet:
format.class=io.confluent.connect.s3.format.parquet.ParquetFormat
3. 检查权限
确保Docker容器内/plugins/lib下的所有jar包都有可读权限,避免因为权限问题导致类加载失败。
三、验证步骤
- 把所有依赖jar放好后,重启Kafka Connect服务
- 确认Schema Registry能正常访问(比如用curl访问
http://<你的主机IP>:8081) - 重新创建连接器,查看日志是否还有类找不到的报错
内容的提问来源于stack exchange,提问作者Jin Ma
相关产品推荐
相关产品推荐

