簡體   English   中英

Kafka Connect JDBC源連接器不適用於Microsoft SQL Server

[英]Kafka Connect JDBC Source Connector not working for Microsoft SQL Server

我已經設置了Kafka Connect的dockerized集群,該集群以分布式模式運行。 我正在嘗試設置一個Kafka JDBC源連接器,以在Microsoft SQL Server和Kafka之間移動數據。

以下是我的connector-plugins API響應的輸出

[
    {
    class: "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
    type: "sink",
    version: "4.0.0"
    },
    {
    class: "io.confluent.connect.hdfs.HdfsSinkConnector",
    type: "sink",
    version: "4.0.0"
    },
    {
    class: "io.confluent.connect.hdfs.tools.SchemaSourceConnector",
    type: "source",
    version: "1.0.0-cp1"
    },
    {
    class: "io.confluent.connect.jdbc.JdbcSinkConnector",
    type: "sink",
    version: "4.0.0"
    },
    {
    class: "io.confluent.connect.jdbc.JdbcSourceConnector",
    type: "source",
    version: "4.0.0"
    },
    {
    class: "io.debezium.connector.mongodb.MongoDbConnector",
    type: "source",
    version: "0.7.4"
    },
    {
    class: "io.debezium.connector.mysql.MySqlConnector",
    type: "source",
    version: "0.7.4"
    },
    {
    class: "org.apache.kafka.connect.file.FileStreamSinkConnector",
    type: "sink",
    version: "1.0.0-cp1"
    },
    {
    class: "org.apache.kafka.connect.file.FileStreamSourceConnector",
    type: "source",
    version: "1.0.0-cp1"
    }
]

我已經將JDBC Driver provided my Microsoft SQL ServerJDBC Driver provided my Microsoft SQL Server添加到Kafka Connect群集中的plugins path中。

以下是我的connectors api的輸入,

curl -X POST \
  http://kafka-connect-cluster.com/connectors \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
"name": "mssql-source-connector",
"config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
        "mode": "timestamp",
        "timestamp.column.name": "updateTimeStamp",
        "query": "select * from table_name",
        "tasks.max": "1",
        "table.types": "TABLE",
        "key.converter.schemas.enable": "false",
        "topic.prefix": "data_",
        "value.converter.schemas.enable": "false",
        "connection.url": "jdbc:sqlserver://<host>:<port>;databaseName=<dbName>;",
        "connection.user": "<username>",
        "connection.password": "<password>",
        "value.converter": "org.apache.kafka.connect.json.JsonConverter",
        "key.converter": "org.apache.kafka.connect.json.JsonConverter",
        "poll.interval.ms": "5000",
        "table.poll.interval.ms": "120000"
    }
}'

我在嘗試此查詢時遇到的錯誤如下:

{
    "error_code": 400,
    "message": "Connector configuration is invalid and contains the following 2 error(s):\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:sqlserver://<host>:<port>;databaseName=<db_name>; for configuration Couldn't open connection to jdbc:sqlserver://<host>:<port>;databaseName=<db_name>;\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:sqlserver://<host>:<port>;databaseName=<db_name;> for configuration Couldn't open connection to jdbc:sqlserver://<host>:<port>;databaseName=<db_name;>\nYou can also find the above list of errors at the endpoint `/{connectorType}/config/validate`"
}

您可以提供的任何幫助都將受到高度贊賞。

謝謝

答案歸功於@rmoff,它為我指明了正確的方向。

因此,這個問題存在於兩個地方。

  1. 這更像是僅供參考,而不是問題。 我給了docker鏡像一個自定義的CONNECT_PLUGIN_PATH 這樣做沒有錯,但是通常不是一個好主意,因為您將不得不復制融合平台上可用的所有基本插件,這可能會導致在遷移到新版本時出現問題,因為您可能需要經歷同樣的過程。
  2. 這部分是最重要的。 SQLServer JDBC驅動程序必須與kafka-connect-jdbc-<confluent-version>.jar文件夾位於同一文件夾中,在我的情況下為kafka-connect-jdbc-4.0.0.jar

一旦解決了這兩點,我的SQLServer JDBC驅動程序就會按預期開始工作。

基於https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url的結尾; 您輸入的網址無效。 還可以嘗試將JDBC驅動程序放在share/java/kafka-connect-jdbc ,和/或將其添加到CLASSPATH環境變量中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM