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 数据