Kafka Connect JDBC Connector not working with teradata

19 views Asked by At

I'm trying to set up a kafka source connector for my teradata database. I got it to work using the dedicated teradata source connector, but since this doesn't fall under the community license, you have to pay confluent to use it. (that's a NO for the company i work at)

So i want to use the standard jdbc source connector. I have zookeeper / kafka / kafka connect (with jdbc plugin v10.7.6) running and whenever i do a POST to the /connectors endpoint with the following config :

"name": "jdbc_source_mysql_01",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
    "connection.url": "jdbc:teradata:***/DATABASE=***",
    "connection.username": "***",
    "connection.password": "****",
    "table.whitelist": "signaal",
    "mode": "timestamp",
    "timestamp.column.name": "begin_geldigheid",
    "topic.prefix": "dfa-",
    "poll.interval.ms": "1000",
    "transforms": "extractField",
    "transforms.extractField.type": "org.apache.kafka.connect.transforms.ExtractField$Value",
    "transforms.extractField.field": "signaal_id",
    "confluent.topic.bootstrap.servers": "localhost:9092",
    "confluent.topic.replication.factor": "1"
  }

I get the following error:

[2024-03-27 12:56:04,173] ERROR [jdbc_source_mysql_01|worker] WorkerConnector{id=jdbc_source_mysql_01} Error while starting connector (org.apache.kafka.connect.runtime.WorkerConnector:200)
java.lang.NoClassDefFoundError: oracle/i18n/util/LocaleMapper
        at oracle.xml.parser.v2.XMLReader.setEncoding(XMLReader.java:996)
        at oracle.xml.parser.v2.XMLReader.checkXMLDecl(XMLReader.java:3576)
        at oracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:586)
        at oracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:290)
        at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:244)
        at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:176)
        at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:132)
        at com.teradata.tdgss.jtdgss.TdgssParseXml.parse(TdgssParseXml.java:664)
        at com.teradata.tdgss.jtdgss.TdgssConfigApi.<init>(TdgssConfigApi.java:95)
        at com.teradata.tdgss.jtdgss.TdgssConfigApi.<clinit>(TdgssConfigApi.java:49)
        at com.teradata.tdgss.jtdgss.TdgssManager.<init>(TdgssManager.java:66)
        at com.teradata.tdgss.jtdgss.TdgssManager.<clinit>(TdgssManager.java:28)
        at com.teradata.jdbc.jdbc.GenericTeraEncrypt.getGSSM(GenericTeraEncrypt.java:577)
        at com.teradata.jdbc.jdbc.GenericTeraEncrypt.<init>(GenericTeraEncrypt.java:116)
        at com.teradata.jdbc.jdbc.GenericTeradataConnection.<init>(GenericTeradataConnection.java:108)
        at com.teradata.jdbc.jdbc_4.TDSession.<init>(TDSession.java:187)
        at com.teradata.jdbc.jdk6.JDK6_SQL_Connection.<init>(JDK6_SQL_Connection.java:36)
        at com.teradata.jdbc.jdk6.JDK6ConnectionFactory.constructSQLConnection(JDK6ConnectionFactory.java:25)
        at com.teradata.jdbc.jdbc.ConnectionFactory.createConnection(ConnectionFactory.java:181)
        at com.teradata.jdbc.jdbc.ConnectionFactory.createConnection(ConnectionFactory.java:171)
        at com.teradata.jdbc.TeraDriver.doConnect(TeraDriver.java:236)
        at com.teradata.jdbc.TeraDriver.connect(TeraDriver.java:162)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:190)
        at io.confluent.connect.jdbc.dialect.GenericDatabaseDialect.getConnection(GenericDatabaseDialect.java:256)
        at io.confluent.connect.jdbc.util.CachedConnectionProvider.newConnection(CachedConnectionProvider.java:84)
        at io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:54)
        at io.confluent.connect.jdbc.JdbcSourceConnector.start(JdbcSourceConnector.java:95)
        at org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:192)
        at org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:217)
        at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:376)
        at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:357)
        at org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:144)
        at org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:122)
        at org.apache.kafka.connect.runtime.isolation.Plugins.lambda$withClassLoader$1(Plugins.java:236)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: oracle.i18n.util.LocaleMapper
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
        at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:124)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
        ... 40 more

If i open the i18n jar i can indeed see that the LocaleMapper class is not there. But i see articles from 2017/2019 that got teradata working with the standard jdbc connector.

This seems to be the same issue as https://github.com/confluentinc/kafka-connect-jdbc/issues/1077 . But i don't see any reply's there.

So trying on stackoverflow now, has anyone ran into this issue?

Tried different versions of kafka-connect-jdbc, tried different teradata drivers.

0

There are 0 answers