Apache kafka Kafka连接自定义timestamp.extractor

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

在尝试从Kafka读取消息到S3时,将jar添加到Kafka connect类路径时遇到问题

目标是基于时间戳在分区中编写消息,时间戳是Kafka消息中的密钥的一部分

为了使故事简短,我必须提供定制的时间戳提取器。根据文档创建了一个实现
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以及其他连接器的依赖项。例如:

    如果需要,请保存在
    /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


最后,您将遵循一个类似的过程,使自定义分区器可用于连接器

不过,谢谢你,你能解释一下为什么
plugin.path
不能加载自定义提取器或分区器吗?当你说它不能工作时,你的意思是它不能从
plugin.path
中的单独目录加载它?这是因为partitioner类和timestamp.extractor类都不是连接插件(至少目前是这样)。连接插件包括:连接器、变换器、转换器。