【发布时间】:2016-09-07 23:50:41
【问题描述】:
我在使用 spark-submit.sh 脚本在 Bluemix Apache-Spark 服务集群上启动的 Spark 应用程序中连接到我的 postgresql 数据库时遇到问题
我的 scala 文件代码是
val conf = new SparkConf().setAppName("My demo").setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val driver = "org.postgresql.Driver"
val url = "jdbc:postgresql://aws-us-east-1-portal.16.dblayer.com:10394/tennisdb?user=***&password=***"
println("create")
try {
Class.forName(driver)
val jdbcDF = sqlContext.read.format("jdbc").options(Map("url" -> url, "driver" -> driver, "dbtable" -> "inputdata")).load()
jdbcDF.show()
println("success")
} catch {
case e : Throwable => {
println(e.toString())
println("Exception");
}
}
sc.stop()
我正在使用 sbt 文件来解决依赖关系。 sbt文件的代码是:
name := "spark-sample"
version := "1.0"
scalaVersion := "2.10.4"
// Adding spark modules dependencies
val sparkModules = List("spark-core",
"spark-streaming",
"spark-sql",
"spark-hive",
"spark-mllib",
"spark-repl",
"spark-graphx"
)
val sparkDeps = sparkModules.map( module => "org.apache.spark" % s"${module}_2.10" % "1.4.0" )
libraryDependencies ++= sparkDeps
libraryDependencies += "org.postgresql" % "postgresql" % "9.4-1201-jdbc41"
然后我使用 sbt package 命令为我的应用程序创建一个 jar,以便在使用 Bluemix Apache-Spark 服务的集群上运行它。 jar 为我成功创建,应用程序在本地运行,没有任何错误。但是,当我使用 spark-submit.sh 脚本将应用程序提交到 Bluemix Apache-Spark 服务时,我得到了 ClassNotFoundException for org.postgresql.Driver
【问题讨论】:
标签: postgresql scala apache-spark sbt ibm-cloud