Getting NoClassDefFoundError: org/apache/kafka/connect/header/ConnectHeaders when I create a connector
Getting NoClassDefFoundError: org/apache/kafka/connect/header/ConnectHeaders when I create a connector
我使用此页面上的说明在 CentOS 7.9
上安装了融合平台。
sudo yum install confluent-platform-oss-2.11
我正在使用带有 apache 版本 2.6.1 的 AWS MSK 集群。
我开始使用 /usr/bin/connect-distributed /etc/kafka/connect-distributed.properties
进行连接。我在 distributed.properties
中以 bootstrap 的形式提供了 MSK 客户端端点。连接启动就好了。但是,当我尝试添加以下连接器时,它会引发以下错误。
连接器配置 -
{
"name": "source",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"tasks.max": "1",
"plugin.name":"pgoutput",
"database.hostname": "stage-sub.rds.amazonaws.com",
"database.port": "5432",
"database.user": "abc",
"database.password": "abc",
"database.server.name": "staging-orders",
"database.dbname": "abc",
"table.whitelist": "abc",
"database.history.kafka.bootstrap.servers": "abcmigrat.3kppd9.c16.kafka.us-east-1.amazonaws.com:9092",
"database.history.kafka.topic": "schema-changes.abc",
"transforms": "route",
"transforms.route.type": "org.apache.kafka.connect.transforms.RegexRouter",
"transforms.route.regex": "([^.]+)\.([^.]+)\.([^.]+)",
"transforms.route.replacement": ""
}
}
错误片段 -
ERROR WorkerSourceTask{id=deb-payment-staging-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:172)
org.apache.kafka.connect.errors.ConnectException: An exception occurred in the change event producer. This connector will be stopped.
at io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:42)
at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start[=11=](ChangeEventSourceCoordinator.java:130)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/apache/kafka/connect/header/ConnectHeaders
at io.debezium.pipeline.EventDispatcher$BufferingSnapshotChangeRecordReceiver.changeRecord(EventDispatcher.java:431)
at io.debezium.pipeline.EventDispatcher.changeRecord(EventDispatcher.java:176)
at io.debezium.relational.RelationalChangeRecordEmitter.emitReadRecord(RelationalChangeRecordEmitter.java:88)
at io.debezium.relational.RelationalChangeRecordEmitter.emitChangeRecords(RelationalChangeRecordEmitter.java:48)
at io.debezium.pipeline.EventDispatcher.dispatchSnapshotEvent(EventDispatcher.java:166)
at io.debezium.relational.RelationalSnapshotChangeEventSource.createDataEventsForTable(RelationalSnapshotChangeEventSource.java:375)
at io.debezium.relational.RelationalSnapshotChangeEventSource.createDataEvents(RelationalSnapshotChangeEventSource.java:306)
at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:136)
at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:69)
at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start[=11=](ChangeEventSourceCoordinator.java:113)
... 5 more
Caused by: java.lang.NoClassDefFoundError: org/apache/kafka/connect/header/ConnectHeaders
我不熟悉这个特定的连接器,但一种可能的解释是连接器版本和 kafka connect worker 版本之间存在兼容性问题。
您需要查看连接器的文档并确认它支持哪个版本的连接。
我使用此页面上的说明在 CentOS 7.9
上安装了融合平台。
sudo yum install confluent-platform-oss-2.11
我正在使用带有 apache 版本 2.6.1 的 AWS MSK 集群。
我开始使用 /usr/bin/connect-distributed /etc/kafka/connect-distributed.properties
进行连接。我在 distributed.properties
中以 bootstrap 的形式提供了 MSK 客户端端点。连接启动就好了。但是,当我尝试添加以下连接器时,它会引发以下错误。
连接器配置 -
{
"name": "source",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"tasks.max": "1",
"plugin.name":"pgoutput",
"database.hostname": "stage-sub.rds.amazonaws.com",
"database.port": "5432",
"database.user": "abc",
"database.password": "abc",
"database.server.name": "staging-orders",
"database.dbname": "abc",
"table.whitelist": "abc",
"database.history.kafka.bootstrap.servers": "abcmigrat.3kppd9.c16.kafka.us-east-1.amazonaws.com:9092",
"database.history.kafka.topic": "schema-changes.abc",
"transforms": "route",
"transforms.route.type": "org.apache.kafka.connect.transforms.RegexRouter",
"transforms.route.regex": "([^.]+)\.([^.]+)\.([^.]+)",
"transforms.route.replacement": ""
}
}
错误片段 -
ERROR WorkerSourceTask{id=deb-payment-staging-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:172)
org.apache.kafka.connect.errors.ConnectException: An exception occurred in the change event producer. This connector will be stopped.
at io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:42)
at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start[=11=](ChangeEventSourceCoordinator.java:130)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/apache/kafka/connect/header/ConnectHeaders
at io.debezium.pipeline.EventDispatcher$BufferingSnapshotChangeRecordReceiver.changeRecord(EventDispatcher.java:431)
at io.debezium.pipeline.EventDispatcher.changeRecord(EventDispatcher.java:176)
at io.debezium.relational.RelationalChangeRecordEmitter.emitReadRecord(RelationalChangeRecordEmitter.java:88)
at io.debezium.relational.RelationalChangeRecordEmitter.emitChangeRecords(RelationalChangeRecordEmitter.java:48)
at io.debezium.pipeline.EventDispatcher.dispatchSnapshotEvent(EventDispatcher.java:166)
at io.debezium.relational.RelationalSnapshotChangeEventSource.createDataEventsForTable(RelationalSnapshotChangeEventSource.java:375)
at io.debezium.relational.RelationalSnapshotChangeEventSource.createDataEvents(RelationalSnapshotChangeEventSource.java:306)
at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:136)
at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:69)
at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start[=11=](ChangeEventSourceCoordinator.java:113)
... 5 more
Caused by: java.lang.NoClassDefFoundError: org/apache/kafka/connect/header/ConnectHeaders
我不熟悉这个特定的连接器,但一种可能的解释是连接器版本和 kafka connect worker 版本之间存在兼容性问题。
您需要查看连接器的文档并确认它支持哪个版本的连接。