Kafka到Snowflake-无法找到实现Connector的任何类

时间:2019-12-13 20:51:50

标签: apache-kafka apache-kafka-connect snowflake-data-warehouse

尝试连接到Kafka集群并将数据从主题写入Snowflake。

我遇到的错误是:

java.util.concurrent.ExecutionException: org.apache.kafka.connect.errors.ConnectException: Failed to find any class that implements Connector and which name matches com.snowflake.kafka.connector.SnowflakeSinkConnector

available connectors are: PluginDesc{klass=class com.snowflake.kafka.connector.SnowflakeSinkConnector, name='com.snowflake.kafka.connector.SnowflakeSinkConnector', version='1.0.0', encodedVersion=1.0.0, type=sink, typeName='sink', location='file:path_to_kafka/kafka_2.12-2.3.0/libs/snowflakeinc-snowflake-kafka-connector/'}

我正在运行的命令(不包括标准的zookeeper / kafka启动命令):

/path_to_kafka/kafka_2.12-2.3.0/bin/connect-standalone.sh /path_to_kafka/kafka_2.12-2.3.0/config/connect-standalone.properties /path_to_kafka/kafka_2.12-2.3.0/config/snowflake_properties.properties

我到目前为止所做的事情:

已更新/path_to_kafka/kafka_2.12-2.3.0/config/connect-standalone.properties中的plugin.path

使用

plugin.path=/usr/share/java,/path_to_kafka/kafka_2.12-2.3.0/libs,/path_to_kafka/kafka_2.12-2.3.0/libs/snowflakeinc-snowflake-kafka-connector

我已经在线研究了类似的案例,但是尽管其中许多是收到相同错误消息的用户,但所需的连接器并没有像我这样列出在可用的连接器列表中。

我最初尝试将雪花罐直接放置在libs文件夹中,然后再次放置为整个程序包结构,但均无效。

每次尝试后,我都停止了zookeeper / kafka并重新启动它们,但仍然遇到相同的错误。

我已经用添加到PATH的jar路径进行了测试,但是我收到了同样的失败结果。

我看过的地方

https://docs.confluent.io/3.1.1/connect/userguide.html#installing-connector-plugins

Kafka Connect can't find connector

Kafka Connect cant' find class of developed plugin

Kafka Connect failed to add MySqlConnector

https://github.com/DataReply/kafka-connect-mongodb/issues/23

https://github.com/confluentinc/kafka-connect-jdbc/issues/476

https://github.com/wepay/kafka-connect-bigquery/issues/109

How to copy or configure kafka connect plugin files?

我在哪里下载了我的连接器: https://mvnrepository.com/artifact/com.snowflake/snowflake-kafka-connector/1.0.0

我已经研究了几天,我感觉我已经尝试了所有这些建议。但是,他们都不适合我,我也不知道我在做什么错。

2 个答案:

答案 0 :(得分:0)

来自connector documentation

将您下载的JAR文件[…]复制到/ libs文件夹。

要使其成为Kafka命令的Java运行时类路径,则jar必须直接位于您的/path_to_kafka/kafka_2.12-2.3.0/libs/目录下。根据您的描述,它们似乎位于子目录(/path_to_kafka/kafka_2.12-2.3.0/libs/snowflakeinc-snowflake-kafka-connector/)内。

答案 1 :(得分:0)

我能够在Debian的“ cp-kafka-connect”映像中解决此问题。

在手动安装连接器插件时,我尝试:

  1. 通过卷安装连接器插件文件,并在CONNECT_PLUGIN_PATH中手动提取插件。
  2. 运行confluent-hub install(一旦旋转了连接POD)。

以上两个选项都需要重新启动POD。

要克服手动重新启动POD的操作,可以直接使用以下命令从映像中安装连接器插件。

confluent-hub install snowflakeinc/snowflake-kafka-connector:1.4.3

一旦安装了coonnector插件,就可以安装自定义连接器:

curl -X POST -H "Content-Type: application/json" --data @ODX.json http://localhost:8083/connectors

注意: 无需在CLASSPATH或CONNECT_PLUGIN_PATH中进行其他更改。