我正在尝试将PostgreSQL数据库链接到scala / spark项目。
我写了 build.sbt
name := "Hermes"
version := "1.0"
scalaVersion := "2.10.6"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-sql" % "2.2.0",
"org.apache.spark" %% "spark-core" % "2.0.1",
"org.apache.spark" %% "spark-mllib" % "2.0.1",
"org.postgresql" % "postgresql" % "42.1.1"
)
我有连接方法:
def getDatasetFromSql(query: String): Dataset[Row] = {
val options = Map(
"driver" -> "org.postgresql.Driver",
"url" -> createConnection,
"dbtable" -> query
)
val fromSqlDs: Dataset[Row] = spark.read.format("jdbc").options(options).load
fromSqlDs.cache.printSchema()
fromSqlDs
}
当我录制 sbt包时没有例外,但是当我点火提交我的代码时,我抛出了这个异常 java.lang.NoClassDefFoundError:org / postgresql / Driver < /强>
我已经在这里检查了一些答案,关于使用 classOf [org.postgresql.driver] 和 SparkConf()。setJars()。目前没有成功。
我该如何做到这一点?
答案 0 :(得分:3)
我曾经遇到过类似的问题。所以在第一次尝试时我已经下载了postgres驱动程序并将其保存在特定路径中。然后运行spark应用程序,如下所示:
sbt package
spark-submit --driver-class-path ~/jarDir/postgresql-9.3-1102-jdbc41.jar target/scala-2.10/simple-project_2.10-1.0.jar
当我和Ambari合作时。因此,将postgres驱动程序直接添加到自定义参数中。所以,下次运行命令时不需要传递postgres驱动程序。希望它有所帮助。