我在通过使用spark-submit.sh启动Bluemix Apache-Spark服务集群的Spark应用程序中连接到我的postgresql数据库时遇到问题脚本连接到运行在Bluemix Apache-Spark服务上的Spark应用程序中的Postgresql数据库
我的斯卡拉文件中的代码是
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命令为我的应用程序使用Bluemix Apache的星火服务集群上运行它创建一个罐子里。该jar已成功创建,并且该应用程序在本地运行,没有任何错误。但是,当我使用spark-submit.sh脚本提交申请到Bluemix Apache的星火服务,我得到的ClassNotFoundException为org.postgresql.Driver