spark和aws redshift:java.sql.SQLException:没有找到适合jdbc的驱动程序:redshift://xxx.us-west-2.redshift.amazonaws

Posted

技术标签:

【中文标题】spark和aws redshift:java.sql.SQLException:没有找到适合jdbc的驱动程序:redshift://xxx.us-west-2.redshift.amazonaws.com:5439【英文标题】:spark and aws redshift: java.sql.SQLException: No suitable driver found for jdbc:redshift://xxx.us-west-2.redshift.amazonaws.com:5439 【发布时间】:2016-05-18 00:49:38 【问题描述】:

操作系统:centos

火花:1.6.1

sbt: build.sbt

libraryDependencies ++= 
Seq(
    "org.apache.spark" %% "spark-core" % "1.6.1" % "provided",
    "com.amazonaws" % "aws-java-sdk" % "1.10.75",
    "com.amazonaws" % "amazon-kinesis-client" % "1.1.0",
    "com.amazon.redshift" % "jdbc4" % "1.1.7.1007" % "test"
)

resolvers ++= Seq(
    "redshift" at "https://s3.amazonaws.com/redshift-downloads/drivers/RedshiftJDBC4-1.1.7.1007.jar"
         )

火花应用:

val redshiftDriver = "com.amazon.redshift.jdbc4.Driver"
Class.forName(redshiftDriver)

我已经指定了 redshift 驱动程序,并更新为 url 等,此处遵循 AWS 官方文档:http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-in-code.html

但我仍然收到以下错误:

java.sql.SQLException: No suitable driver found for jdbc:redshift://xxx.us-west-2.redshift.amazonaws.com:5439

我用谷歌搜索,有人说应该将 jar 添加到类路径中?有人可以在这里帮忙吗?非常感谢

【问题讨论】:

我收到 java.sql.SQLException: 没有合适的驱动程序。该代码在本地运行良好,但在 EMR 中运行良好。我必须添加带有连接字符串的 .option("driver","com.amazon.redshift.jdbc42.Driver") 以使其在 EMR 上运行。 【参考方案1】:

已解决

只需清理所有缓存的内容,然后从头开始重新构建所有内容,然后它就可以工作了

添加:

Databricks 实现了这个库,它可以让我们在 Spark 中更轻松地交互 redshift https://github.com/databricks/spark-redshift

// Get some data from a Redshift table
val df: DataFrame = sqlContext.read
    .format("com.databricks.spark.redshift")
    .option("url", "jdbc:redshift://redshifthost:5439/database?user=username&password=pass")
    .option("dbtable", "my_table")
    .option("tempdir", "s3n://path/for/temp/data")
    .load()

【讨论】:

以上是关于spark和aws redshift:java.sql.SQLException:没有找到适合jdbc的驱动程序:redshift://xxx.us-west-2.redshift.amazonaws的主要内容,如果未能解决你的问题,请参考以下文章

Apache Spark 2.4.0、AWS EMR、Spark Redshift 和 User 类抛出异常:java.lang.AbstractMethodError

无法使用 spark(sqlContext) 在 aws redshift 中写入 csv 数据

EMR 上的 spark-redshift 连接超时异常

AWS Redshift 中嵌套游标的替代方案

在运行 spark 应用程序时包含 aws jdbc 驱动程序

为啥 Redshift 和 S3 之间的 AWS 文件大小不同?