Apache kafka Kafka连接自定义timestamp.extractor
在尝试从Kafka读取消息到S3时,将jar添加到Kafka connect类路径时遇到问题 目标是基于时间戳在分区中编写消息,时间戳是Kafka消息中的密钥的一部分 为了使故事简短,我必须提供定制的时间戳提取器。根据文档创建了一个实现Apache kafka Kafka连接自定义timestamp.extractor,apache-kafka,apache-kafka-connect,confluent-platform,Apache Kafka,Apache Kafka Connect,Confluent Platform,在尝试从Kafka读取消息到S3时,将jar添加到Kafka connect类路径时遇到问题 目标是基于时间戳在分区中编写消息,时间戳是Kafka消息中的密钥的一部分 为了使故事简短,我必须提供定制的时间戳提取器。根据文档创建了一个实现TimestampExtractor接口的类,并向plugin.path属性添加了一个JAR位置 问题是,当我启动connect时,找不到该类。不知怎的,jar不在类路径中,我得到了 org.apache.kafka.common.config.ConfigExc
TimestampExtractor
接口的类,并向plugin.path
属性添加了一个JAR位置
问题是,当我启动connect时,找不到该类。不知怎的,jar不在类路径中,我得到了
org.apache.kafka.common.config.ConfigException: Invalid timestamp extractor: partitioner.SpotadDateTimeExtractor
其他数据:
版本:融合4.0.0
连接:独立连接
启动命令:
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
a回复任何帮助。要使自定义时间戳提取器类可用于S3连接器,您需要以下内容:
- 添加带有自定义类的jar以及其他连接器的依赖项。例如:
如果需要,请保存在
下 仅在S3连接器中可用,或在/share/java/kafka-connect-s3
使其可用于 所有存储接收器连接器(当前为S3和HDFS连接器)/share/java/kafka connect storage common
- 确保自定义类实现了io.confluent.connect.storage.partitioner.TimestampExtractor接口李>
- 在连接器的配置中设置
属性时,请使用完全限定的类名,当然要确保它与您在jar中定义和打包的包匹配。例如:timestamp.extractor
timestamp.extractor=me.connectors.MyTimestampExtractor
最后,您将遵循一个类似的过程,使自定义分区器可用于连接器 不过,谢谢你,你能解释一下为什么
plugin.path
不能加载自定义提取器或分区器吗?当你说它不能工作时,你的意思是它不能从plugin.path
中的单独目录加载它?这是因为partitioner类和timestamp.extractor类都不是连接插件(至少目前是这样)。连接插件包括:连接器、变换器、转换器。