首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spark-submit期间找不到org.postgresql.Driver的驱动程序异常

在spark-submit期间找不到org.postgresql.Driver的驱动程序异常
EN

Stack Overflow用户
提问于 2018-07-23 14:57:24
回答 1查看 1.1K关注 0票数 0

我正在尝试学习一个基于IntelliJ IDEA的Scala-Spark JDBC程序。为此,我创建了一个Scala SBT项目,项目结构如下:

在类中编写JDBC连接参数之前,我尝试加载一个包含所有连接属性的属性文件,并尝试显示它们是否正确加载,如下所示:

testconnection.properties:

代码语言:javascript
复制
devUserName=username
devPassword=password
gpDriverClass=org.postgresql.Driver
gpDevUrl=jdbc:url

代码:

代码语言:javascript
复制
package com.yearpartition.obj

import java.io.FileInputStream
import java.util.Properties
import org.apache.spark.sql.SparkSession
import org.apache.spark.SparkConf

object PartitionRetrieval {

  var conf = new SparkConf().setAppName("Spark-JDBC")
  val conFile = "/home/hmusr/ReconTest/inputdir/testconnection.properties"
  val properties = new Properties()
  properties.load(new FileInputStream(conFile))
  val connectionUrl = properties.getProperty("gpDevUrl")
  val devUserName=properties.getProperty("devUserName")
  val devPassword=properties.getProperty("devPassword")
  val gpDriverClass=properties.getProperty("gpDriverClass")

  println("connectionUrl: " + connectionUrl)

  Class.forName(gpDriverClass).newInstance()

  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().enableHiveSupport().config(conf).master("local[2]").getOrCreate()
    println("connectionUrl: " + connectionUrl)
  }
}

Build.sbt的内容:

代码语言:javascript
复制
libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.0.0" % "provided",
  "org.apache.spark" %% "spark-sql" % "2.0.0" % "provided",
  "org.json4s" %% "json4s-jackson" % "3.2.11" % "provided",
  "org.postgresql" % "postgresql" % "42.1.1" % "provided",
  "org.apache.httpcomponents" % "httpclient" % "4.5.3"
)

当我执行spark-submit时,我得到了一个异常:

代码语言:javascript
复制
Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver

Spark submit命令:

代码语言:javascript
复制
SPARK_MAJOR_VERSION=2 spark-submit --class com.yearpartition.obj.PartitionRetrieval yearpartition_2.11-0.1.jar --driver-class-path /home/hmusr/jars/postgresql-42.1.4.jar --jars /home/hmusr/jars/postgresql-42.1.4.jar

我将postgres jar文件放在dir: /home/hmusr/jars/和sbt依赖项中。谁能让我知道是什么导致了这个问题,以及我如何解决它?

EN

回答 1

Stack Overflow用户

发布于 2018-07-23 15:08:15

您需要在类路径中包含驱动程序类。从here下载此jar

使用--jars将其传递给spark-submit。注意:在local模式下,--jars不起作用。

在sbt项目中,在构建lib目录时将其添加到lib目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51473134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档