how to specifiy data-type "date" in jdbc-sink-connector schema information?

Viewed 496
  • 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?

0 Answers
Related