我在尝试将消息从Kafka读取到S3时,将jar添加到Kafka连接类路径时出现问题。
目标是根据时间戳在分区中写入消息,这是Kafka消息中Key的一部分。
为了简化故事,我必须提供自定义时间戳提取器。文档here创建了一个实现TimestampExtractor
接口的类,并在plugin.path
属性中添加了一个JAR位置。
问题是当我开始连接时,找不到类。不知怎的,jar不在classpath中,而且我得到了
org.apache.kafka.common.config.ConfigException: Invalid timestamp extractor: partitioner.SpotadDateTimeExtractor
其他数据:
版本:汇合4.0.0
连接:Connect Standalone
启动命令:
sudo /home/ubuntu/confluent-4.0.0/bin/connect-standalone \
/home/ubuntu/confluent-4.0.0/etc/kafka/connect-standalone.properties \
/home/ubuntu/confluent-4.0.0/etc/kafka-connect-s3/quickstart-s3.properties
宣布任何帮助。
答案 0 :(得分:2)
要使S3连接器可以使用自定义时间戳提取器类,您需要具备以下条件:
使用自定义类添加jar以及其他连接器的依赖项。示例:
如果您愿意,请在./share/java/kafka-connect-s3
下保存
仅适用于S3连接器或中
./share/java/kafka-connect-storage-common
使其可用
所有存储接收器连接器(目前为S3和HDFS连接器)。
io.confluent.connect.storage.partitioner.TimestampExtractor
接口。 在连接器的配置中设置timestamp.extractor
属性时使用完全限定的类名,当然要确保它与您在jar中定义和打包的包匹配。例如:
timestamp.extractor=me.connectors.MyTimestampExtractor
最后,您需要按照类似的过程为连接器提供自定义分区程序。