簡體   English   中英

Spark找不到Postgres JDBC驅動程序

[英]Spark cannot find the postgres jdbc driver

編輯:請參閱最后的編輯

首先,我在Amazon EMR上使用Spark 1.5.2,並將Amazon RDS用於postgres數據庫。 其次,我是Spark和Hadoop和MapReduce領域的一名新手。

本質上,我的問題與此人相同: java.sql.SQLException:將DataFrame加載到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傳遞到工作程序節點上,並以某種方式在其上設置類路徑,而我對此並不十分了解。 但是后來他們說,問題顯然已經在Spark 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

解決這個問題? 我只是將路徑作為參數添加到了看起來更多的標志中。

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()

甚至手動將所需的jars復制給工作人員,然后將其放在CLASSPATH上的某個位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM