【问题标题】:Kafka to Snowflake - Failed to find any class that implements Connector卡夫卡到雪花 - 找不到任何实现连接器的类
【发布时间】:2020-04-07 07:47:59
【问题描述】:

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

我得到的错误是:

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 start 命令):

/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

我在网上研究了类似的案例,但其中许多是收到相同错误消息的用户,但他们想要的连接器并没有像我一样列在可用连接器列表中。

我最初尝试将雪花 jar 直接放在 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

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

【问题讨论】:

  • 日志输出中是否还有其他值得注意的错误?另外,您的配置文件是否与此处的示例相似? docs.snowflake.net/manuals/user-guide/…
  • 刚刚查看了日志,有很多 INFO 和 WARN,但只有一个错误行。我确实看到了这一点,这不是错误,但让我更加困惑:INFO Loading plugin from: /path_to_kafka/kafka_2.12-2.3.0/libs/snowflakeinc-snowflake-kafka-connector (org.apache.kafka.connect.runtime .isolation.DelegatingClassLoader:222)。对于配置文件,我大量引用了您提供的链接并在网上找到了一些示例,所以我认为它可能是可以接受的。
  • 你应该只需要plugin.path=/usr/share/java,/path_to_kafka/kafka_2.12-2.3.0/libs,但看起来它正在从日志中正常加载
  • 也许你可以向这个人寻求帮助stackoverflow.com/q/59329007/2308683
  • 这并不能直接回答您的问题,但是如果您使用 Confluent Hub 安装插件,您会发现生活更轻松 - confluent-hub install --no-prompt snowflakeinc/snowflake-kafka-connector:0.5.5。请参阅此处以获取工作配置github.com/confluentinc/demo-scene/blob/master/…

标签: apache-kafka apache-kafka-connect snowflake-cloud-data-platform


【解决方案1】:

来自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/) 内。

【讨论】:

    【解决方案2】:

    我能够在 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
    

    安装连接器插件后,您可以安装自定义连接器:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 2020-06-20
      • 2020-02-12
      • 2020-11-18
      • 2022-01-05
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      相关资源
      最近更新 更多