2016-01-20 100 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

相关问题