在我的spark应用程序中,我尝试使用以下行连接到本地Postgres数据库:
val conn = DriverManager.getConnection("jdbc:postgresql://localhost/postgres", "postgres", "*Qwerty#")
Postgres服务器在端口5432上运行(默认)。我也尝试过包括港口。
我也尝试过Class.forName("org.postgresql.Driver")
,但是它抛出ClassNotFoundException。我已经确定驱动程序在ClassPath中。
我在本地模式下运行spark。
但是我遇到了以上异常。
我已经通过sbt
包含了jdbc驱动程序,如此处所述:
https://mvnrepository.com/artifact/org.postgresql/postgresql/42.2.2
答案 0 :(得分:1)
因此,问题在于执行者无法访问驱动程序jar。
因此使用spark.jars
配置属性传递驱动程序jar即可解决该问题。
它在spark文档here中:
以逗号分隔的jar列表,包括在驱动程序和执行程序上 类路径。允许使用globs。
答案 1 :(得分:0)
您也可以尝试以下代码:
属性dbProperties = new Properties();
dbProperties.put(“ driver”,“ org.postgresql.Driver”);
dbProperties.put(“ user”,“ postgres”);
dbProperties.put(“ password”,“ * Qwerty#”);
val conn = DriverManager.getConnection(“ jdbc:postgresql:// localhost:5432 / postgresDB”,dbProperties);