Kafka Connect自定义timestamp.extractor

时间:2017-12-18 10:51:27

标签: apache-kafka apache-kafka-connect confluent

我在尝试将消息从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

宣布任何帮助。

1 个答案:

答案 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

最后,您需要按照类似的过程为连接器提供自定义分区程序。