我正试图将来自Kafka avro主题的数据吸收到事先创建的现有Oracle数据库表中。 我以分布模式运行Kafka Connect(3名工人)。 当我通过REST提交新连接器时,它会创建一个连接器,一项新任务,但任务立即失败。 不明白为什么?以下是任务错误和我的配置。Kafka将JDBC接收器连接到Oracle任务失败
任务错误
{"state":"FAILED","trace":"org.apache.kafka.connect.errors.ConnectException: Exiting WorkerSinkTask due to unrecoverable exception.
at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:457)
at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:251)
at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:180)
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:148)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:146)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:190)
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)","id":0,"worker_id":"kafka_host02:8083"}
卡夫卡连接配置
bootstrap.servers=kafka_host01:9092,kafka_host02:9092,kafka_host03:9092
group.id=connect-cluster-00
key.converter=io.confluent.connect.avro.AvroConverter
key.converter.schema.registry.url=http://kafka_host01:8081
value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=http://kafka_host01:8081
key.converter.schemas.enable=true
value.converter.schemas.enable=true
internal.key.converter=org.apache.kafka.connect.json.JsonConverter
internal.value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter.schemas.enable=false
internal.value.converter.schemas.enable=false
offset.storage.topic=connect-offsets
offset.storage.replication.factor=3
config.storage.topic=connect-configs
config.storage.replication.factor=3
status.storage.topic=connect-status
status.storage.replication.factor=3
offset.flush.interval.ms=10000
rest.port=8083
连接器提交命令
curl -X POST -H "Content-Type: application/json" --data '{"name": "heat-predict-ora-sink", "config": {"connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector", "tasks.max":"1", "topics":"MY-TEST-02_topic", "connection.user":"scott", "connection.password":"tiger", "connection.url":"jdbc:oracle:thin:@orahost.localdomain:1521:orcl", "key.converter":"io.confluent.connect.avro.AvroConverter", "key.converter.schema.registry.url":"http://localhost:8081", "value.converter":"io.confluent.connect.avro.AvroConverter", "value.converter.schema.registry.url":"http://localhost:8081", "insert.mode":"insert", "batch.size":"0", "table.name.format":"TEST.MY_TABLE_IN", "pk.mode":"none", "pk.fields":"none" }}' http://localhost:8083/connectors
请告诉我任何想法,为什么它表现如此?
连接日志中是否有其他错误?如果以分布式模式将其作为单个工作人员运行,是否可行? –
我开始连接 - 分布在一个工作人员,发现根本问题是它找不到ojdbc8.jar,我把它放到confluent/share/java/kafka-connect-jdbc文件夹中,它有帮助。 –
但还有一个问题 - 现在我看到连接日志中有关SID的错误。从字面上看,它说我 - ORA-12505,TNS:侦听器目前不知道连接描述符中给出的SID。但是我在主机上获得了tnsnames.ora,并且可以使用sqlplus实用程序连接到SID。可能是我应该在某处复制tnsnames.ora? –