mysql - 设置 Kafka 连接器管道时出错
问题描述
设置 Kafka 连接器管道时出错
环境概览:
Docker 容器
- docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mypw -d mysql:latest
- docker run -d --name Elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" Elasticsearch:7.9.2
操作系统
- WSL2 开启 - Windows-10 版本 1909(操作系统版本 18363.1139)
卡夫卡版
- 汇合-6.0.0
您好,我正在阅读 Kafka:Neha Narkhede、Gwen Shapira 和 Todd Palino 的权威指南 我已经阅读了连接器示例:MySQL 到 Elasticsearch章节(第 146 页),我正在按照说明从MySql 源到Elasticsearch 接收器。我对说明做了一些转移
- 我使用 mvn package 而不是 mvn build创建了 mysql 和Elasticsearch连接器
- 我将上述连接器放在一个名为 C:\Users\ROY\confluent-6.0.0\share\kafka 的文件夹中,其中包含我下载的其他一些连接器。我将connect-distributed.properties中的plugin.path设置为:plugin.path=C://Users//ROY//confluent-6.0.0//share//kafka,/mnt/c/Users/ROY/ confluent-6.0.0/share/kafka
- 我使用mysql和Elasticsearch作为 docker 容器。
mysql 连接器工作正常并将数据读入主题,但是当我尝试创建Elasticsearch连接器时,出现以下错误:
...
(io.confluent.connect._Elasticsearch_._Elasticsearch_SinkConnectorConfig:354)
[2020-10-16 12:22:27,170] ERROR WorkerSinkTask{id=elastic-login-connector-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:187)
java.lang.NoClassDefFoundError: io/searchbox/action/Action
at io.confluent.connect._Elasticsearch_._Elasticsearch_SinkTask.start(_Elasticsearch_SinkTask.java:74)
at io.confluent.connect._Elasticsearch_._Elasticsearch_SinkTask.start(_Elasticsearch_SinkTask.java:48)
at org.apache.kafka.connect.runtime.WorkerSinkTask.initializeAndStart(WorkerSinkTask.java:302)
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:193)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:185)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:235)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: io.searchbox.action.Action
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:104)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 11 more
...
有人可以协助解决问题并解释错误吗?
谢谢
罗伊
解决方案
好的,我发现了问题。在弹性搜索连接器源代码上运行“mvn package”后,我应该将整个目录复制到 Kafka 的 /share 目录中,而我只使用了一个 .jar 文件。
推荐阅读
- c++ - GoogleTest EXPECT_CALL 抛出无趣的调用警告并返回 0 个调用
- python - PHP 到 PYTHON Flask 流媒体 CCTV
- c - (GCC) 如何使用 == 运算符 AND 两个布尔值?
- spring-boot - 如何在其他 Spring Boot 项目中使用我自己的 ceated jar 依赖项
- vue.js - 使用 webpack 及其模块编译 Vue JS 时出现错误 Unexpected token "..."
- python-3.x - 如果其中三个加起来是 15,如何签入一个数字列表?
- python - 为什么 NumPy 点积使用第二个数组的倒数第二个轴?
- python - 使用 pandastable (Python, tkinter) 更新表格内容
- html - 制作导航栏时应该使用“.html”还是“#”?
- javascript - 如何在较新版本的 hapi 中执行 reply.continue(data)