找不到适合 jdbc:amazonaws 的驱动程序

Posted

技术标签:

【中文标题】找不到适合 jdbc:amazonaws 的驱动程序【英文标题】:No suitable driver found for jdbc:amazonaws 【发布时间】:2018-03-15 21:41:45 【问题描述】:

我正在尝试使用 JDBC 连接到 amazon athena。由于我在 maven 上没有找到 AthenaDriver 存储库,因此我在 github 上自己创建了它。基本上我在做的是这样的:

pom.xml:

<repository>
    <id>mvn-rep</id>
    <name>maven repository</name>
    <url>https://github.com/raphael-psr/maven-repository/raw/master/</url>
</repository>
<dependency>
    <groupId>com.amazonaws.athena.jdbc</groupId>
    <artifactId>AthenaJDBC41</artifactId>
    <version>1.1.0</version>
</dependency>

java:

class.forName("com.amazonaws.athena.jdbc.AthenaDriver");

Properties properties = new Properties();
properties.setProperty("user", user);
properties.setProperty("password", password);
properties.setProperty("aws_credentials_provider_class", "amazon.AmazonCredentialsProvider");

Connection connection = DriverManager.getConnection("jdbc:awsathena://athena." + region + ".amazonaws.com:443", properties);

引发异常:

java.sql.SQLException: 找不到适合 jdbc:amazonaws://athena.us-east-1.amazonaws.com:443 的驱动程序

有人知道它是什么吗?

【问题讨论】:

【参考方案1】:

    也许您想从以下位置下载 JDBC 驱动程序:https://s3.amazonaws.com/athena-downloads/drivers/AthenaJDBC41-1.1.0.jar

    您可以将其安装在您自己的 maven 存储库中:

    mvn install:install-file -Dfile=/home/users/User01/Documents/AthenaJDBC41-1.1.0.jar -DgroupId=com.amazonaws.athena.jdbc -DartifactId=athenaJDBC -Dpackaging=jar
    

    然后你可以在你的 pom.xml 中引用它:

让我知道这是否对您有所帮助。

PS:不知道为什么代码格式化在我的电脑上不起作用。我已经尝试了三种不同的浏览器,但我预计会出现同样的问题。

【讨论】:

列表中的代码格式需要和缩进 8,而不是 4(4 使块成为列表的段落,另外 4 使其成为代码)。 这正是我在创建repository 时所做的,而class.forName("com.amazonaws.athena.jdbc.AthenaDriver") 没有返回任何异常。【参考方案2】:

从https://s3.amazonaws.com/athena-downloads/drivers/AthenaJDBC41-1.1.0.jar下载Jar

将 jar 添加到您自己的 maven 存储库中

mvn install:install-file -Dfile=/home/sumit/Downloads/AthenaJDBC41-1.1.0.jar -DgroupId=com.amazonaws.athena.jdbc -DartifactId=athenaJDBC -Dversion=1.1.0 -Dpackaging=jar

-Dfile 值更改为您下载的 jar 路径。 如果需要更新-Dversion

为你的 pom.xml 添加依赖

<dependency>
    <groupId>com.amazonaws.athena.jdbc</groupId>
    <artifactId>athenaJDBC</artifactId>
    <version>1.1.0</version>
</dependency>

【讨论】:

【参考方案3】:

我自己在 Clojure 中开发 Spark 作业时使用 JDBC42 版本的驱动程序的 2.0.2 遇到了这个问题。尽管存在这些差异,但我认为答案会翻译出来,我是从Spark Unable to find JDBC Driver 得到的。

我相信您需要将 Properties 对象中的 driver 属性设置为 Athena Driver 类,即

properties.setProperty("driver", "com.simba.athena.jdbc.Driver");

这对于2.0.2 版本是正确的。在你的情况下应该是

properties.setProperty("driver", "com.amazonaws.athena.jdbc.AthenaDriver");

我不知道为什么 Class.forName 还不够。我还必须构建自己的 Maven 包以包含在内。

【讨论】:

以上是关于找不到适合 jdbc:amazonaws 的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

如何修复:找不到适合 jdbc:sqlserver 的驱动程序 [重复]

找不到适合'jdbc:mysql:// localhost:3306 / mysql的驱动程序[重复]

SQLException: 找不到适合 jdbc:postgresql 的驱动程序

使用 DataSource (Java Eclipse) 时“找不到适合 jdbc 的驱动程序”

“找不到适合 jdbc:sqlite 的驱动程序”问题。我究竟做错了啥?

找不到适合 jdbc:sqlite 的驱动程序