[英]Sink kafka topic to mongodb
我有一个项目,我需要使用 java 从 JSON 文件中获取数据并将其下沉到 kafka 主题中,然后将该主题中的数据下沉到 mongodb 中。 我找到了 kafka-mongodb 连接器,但该文档仅可用于使用融合平台进行连接。 我努力了:
name=mongo-sink
topics=test
connector.class=com.mongodb.kafka.connect.MongoSinkConnector
tasks.max=1
key.ignore=true
# Specific global MongoDB Sink Connector configuration
connection.uri=mongodb://localhost:27017
database=student_kafka
collection=students
max.num.retries=3
retries.defer.timeout=5000
type.name=kafka-connect
然后我运行了命令
.\bin\windows\connect-standalone.bat.\config\connect-standalone.properties.\config\MongoSinkConnector.properties
我收到了这个错误
[2020-08-09 20:18:30,329] ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone)
java.util.concurrent.ExecutionException: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: com/mongodb/ConnectionString
at org.apache.kafka.connect.util.ConvertingFutureCallback.result(ConvertingFutureCallback.java:115)
at org.apache.kafka.connect.util.ConvertingFutureCallback.get(ConvertingFutureCallback.java:99)
at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:118)
Caused by: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: com/mongodb/ConnectionString
at com.mongodb.kafka.connect.sink.MongoSinkConfig.createConfigDef(MongoSinkConfig.java:248)
at com.mongodb.kafka.connect.sink.MongoSinkConfig.<clinit>(MongoSinkConfig.java:139)
at com.mongodb.kafka.connect.MongoSinkConnector.config(MongoSinkConnector.java:72)
at org.apache.kafka.connect.runtime.AbstractHerder.validateConnectorConfig(AbstractHerder.java:366)
at org.apache.kafka.connect.runtime.AbstractHerder.lambda$validateConnectorConfig$1(AbstractHerder.java:326)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: com/mongodb/ConnectionString
... 10 more
Caused by: java.lang.ClassNotFoundException: com.mongodb.ConnectionString
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 10 more
编辑:感谢 BogdanSucaciu 的帮助,我找到了解决方案。
您需要将以下 jars 添加到 kafka/lib 文件夹中。
您缺少 MongoDB 驱动程序。 MongoDB 连接器 jar 仅包含与 Kafka Connect 相关的类,但它仍然需要一个驱动程序才能连接到 MongoDB 实例。 您需要下载该驱动程序并将 jar 文件复制到您发布连接器的同一路径( C:\kafka\plugins
)。
为了保持干净,您还应该在该插件目录中创建另一个文件夹(例如: C:\kafka\plugins\mongodb
)并将与此连接器相关的所有内容移到那里。
后期编辑:
我通过 Kafka Connect 和 MongoDB Sink 连接器进行了旧的设置,发现以下 jars:
这让我相信kafka-connect-mongdb
jar 和mongodb-driver
是不够的。 不过你可以试一试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.