2016-01-20 72 views
0

我在使用Bluemix上的Apache Spark服務連接到我的postgresql 8.4 db時遇到問題。使用JDBC從Bluemix Apache Spark服務連接到postgresql db

我的代碼是:

%AddJar https://jdbc.postgresql.org/download/postgresql-8.4-703.jdbc4.jar -f 
val sqlContext = new org.apache.spark.sql.SQLContext(sc) 

sqlContext.load("jdbc", Map("url" -> "jdbc:postgresql://<ip_address>:5432/postgres? 
user=postgres&password=<password>", "dbtable" -> "table_name")) 

而我得到的錯誤:

Name: java.sql.SQLException

Message: No suitable driver found for jdbc:postgresql://:5432/postgres?user=postgres&password=

我看周圍,似乎我需要將JDBC驅動程序添加到星火類路徑。我不知道如何在Bluemix Apache Spark服務中執行此操作。

回答

0

可能看看here?我相信在Spark 1.4 [source]中不推薦使用load()函數。

你可以試試這個,而不是

val url = "jdbc:postgresql://:5432/postgres" 
val prop = new java.util.Properties 
prop.setProperty("user","postgres") 
prop.setProperty("password","xxxxxx") 

val table = sqlContext.read.jdbc(url,"table_name",prop) 

的URL可能或可能不會需要完整版本 - 即

jdbc:postgresql://:5432/postgres? user=postgres&password=password

+0

謝謝,我現在開始使用load函數,但是您的建議不會工作,我得到相同的「沒有合適的驅動程序」的例外。 –

0

這個工作對我的Bluemix

%AddJar https://jdbc.postgresql.org/download/postgresql-9.4.1208.jar -f

val sqlContext = new org.apache.spark.sql.SQLContext(sc);

val df = sqlContext.read.format(「jdbc」)。options(Map(「url」 - >「jdbc:postgresql://:/」,「user」 - >「」,「password」 - >「」,「dbtable」 - >「」,「driver」 - >「org.postgresql.Driver」))load()