2016-01-20 106 views
0

編輯:見末星火找不到Postgres的JDBC驅動程序

首先的編輯,我使用亞馬遜EMR星火1.5.2和使用Amazon RDS爲我的Postgres數據庫。二是我在這個世界上的Spark和Hadoop和MapReduce的一個完整的新手。

基本上我的問題是一樣的這個傢伙: java.sql.SQLException: No suitable driver found when loading DataFrame into Spark SQL

所以數據幀被加載,但是當我嘗試對其進行評估(做df.show(),其中df是數據幀)給我錯誤:

java.sql.SQLException: No suitable driver found for jdbc:postgresql://mypostgres.cvglvlp29krt.eu-west-1.rds.amazonaws.com:5432/mydb 

我要指出,我開始火花像這樣:

spark-shell --driver-class-path /home/hadoop/postgresql-9.4.1207.jre7.jar 

的解決方案提供建議的jar到工人節點,並以某種方式設置他們的類路徑,我真的不知道該怎麼做。但後來他們說,顯然這個問題被固定在星火1.4,我使用的是1.5.2,並且仍然有這個問題,所以這是怎麼回事?

編輯:看來我解決了這個問題,但是我還是不太明白爲什麼這個工程及以上的東西沒有,所以我想我的問題是,現在爲什麼這樣做:

spark-shell --driver-class-path /home/hadoop/postgresql-9.4.1207.jre7.jar --conf spark.driver.extraClassPath=/home/hadoop/postgresql-9.4.1207.jre7.jar --jars /home/hadoop/postgresql-9.4.1207.jre7.jar 

解決問題?我只是將路徑作爲參數添加到了它看起來更多的標誌中。

回答

3

spark-shell --driver-class-path .... --jars ...使用,因爲在--jars列出的所有jar文件自動集羣在分佈式。

另外,您可以使用

spark-shell --packages org.postgresql:postgresql:9.4.1207.jre7 

,並指定驅動程序類作爲一個選項,DataFrameReader/DataFrameWriter

val df = sqlContext.read.format("jdbc").options(Map(
    "url" -> url, "dbtable" -> table, "driver" -> "org.postgresql.Driver" 
)).load() 

甚至手動複製所需的罐子給工人,有的地方把這些在CLASSPATH

相關問題