- i am new to kafka-connect
- i want to write data from a kafka-topic to oracle, using the oracle-jdbc-sink-connector
- i can't use avro/schema-registry at the moment, so it must be JSON with schema-information inside the data-set
- a "hello world" data-set with simple data-types, like int, string, was written successfully to an oracle table, created via connector auto-create
now i am stuck, because i want to use a "date" data-type in my payload, but i do not know how to specify that in the schema-information.
here is the error message (connect-distributed.log)
ERROR WorkerSinkTask{id=oracle-sink-connector-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask)
org.apache.kafka.connect.errors.ConnectException: Tolerance exceeded in error handler
at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:178)
at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execute(RetryWithToleranceOperator.java:104)
at org.apache.kafka.connect.runtime.WorkerSinkTask.convertAndTransformRecord(WorkerSinkTask.java:488)
at org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:465)
at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:321)
at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:224)
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:192)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227)
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: org.apache.kafka.connect.errors.DataException: Unknown schema type: org.apache.kafka.connect.data.Date
at org.apache.kafka.connect.json.JsonConverter.asConnectSchema(JsonConverter.java:528)
at org.apache.kafka.connect.json.JsonConverter.asConnectSchema(JsonConverter.java:524)
at org.apache.kafka.connect.json.JsonConverter.toConnectData(JsonConverter.java:371)
at org.apache.kafka.connect.storage.Converter.toConnectData(Converter.java:86)
at org.apache.kafka.connect.runtime.WorkerSinkTask.lambda$convertAndTransformRecord$2(WorkerSinkTask.java:488)
at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndRetry(RetryWithToleranceOperator.java:128)
at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:162)
... 13 more
and here is the relevant part of my JSON:
{"records":
[{"value":
{"schema":
{ "type": "struct", "fields":
[{"type": "org.apache.kafka.connect.data.Date", "optional": false, "field": "BEZDAT"}
...]
, "optional": false, "name": "foobar"}
, "payload": {"BEZDAT": "2020-07-15"
...}}]}'
i also tried Date, 'Date', ´Date´, Dateas type
According to the documentation it is possible to use "date". But how to specify? Am i missing something?