不能老是运行,因为java.lang.NoClassDefFoundError的火花应用程序:组织/ PostgreSQL的/驱动器 [英] Can`t run spark app because of java.lang.NoClassDefFoundError: org/postgresql/Driver

查看:506
本文介绍了不能老是运行,因为java.lang.NoClassDefFoundError的火花应用程序:组织/ PostgreSQL的/驱动器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不能老是跑吨星火应用程序,因为java.lang.NoClassDefFoundError的:组织/ PostgreSQL的/驱动程序

我也同样喜欢<一个href=\"http://stackoverflow.com/questions/24916852/how-can-i-connect-to-a-postgresql-database-into-apache-spark-using-scala\">How我可以使用Scala连接到PostgreSQL数据库到Apache中星火?但是当我尝试启动我的应用程序我得到这个例外。

 异常线程mainjava.lang.NoClassDefFoundError的:组织/ PostgreSQL的/驱动器
    在SparkRecommendationMatrix&LT;&初始化GT;(SparkRecommendationMatrix.scala:31)。
    在主$。主要(Main.scala:26)
    在Main.main(Main.scala)
    在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
    在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    在java.lang.reflect.Method.invoke(Method.java:606)
    在org.apache.spark.deploy.SparkSubmit $ .launch(SparkSubmit.scala:292)
    在org.apache.spark.deploy.SparkSubmit $。主要(SparkSubmit.scala:55)
    在org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
抛出java.lang.ClassNotFoundException:引起org.postgresql.Driver
    在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:366)
    在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:355)
    在java.security.AccessController.doPrivileged(本机方法)
    在java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    在java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    在java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 10个

我bild.sbt文件:

 名称:=untitled12版本:=1.0scalaVersion:=2.10.4libraryDependencies ++ = SEQ(
  org.postgresql%PostgreSQL的%9.2-1003-jdbc4
  org.apache.spark%火花mllib_2.10%1.0.0
)解析器+ =阿卡库在http://repo.akka.io/releases/

和我的Java code

  VAL类= SEQ(
    的getClass,//为了得到我们自己的code中的罐子。
    classOf [org.postgresql.Driver] //为了让连接器。
  )  VAL罐子= classes.map(_。getProtectionDomain()得到codeSource()的getLocation()。的getPath())  //设置环境
  VAL的conf =新SparkConf()。setAppName(名称).setJars(罐)
  //.setMaster(\"spark://192.168.10.122:7077)
  VAL SC =新SparkContext(CONF)


解决方案

下载 PostgreSQL驱动并把它添加到你的classpath。

I can`t run mt Spark app because java.lang.NoClassDefFoundError: org/postgresql/Driver

I did same like How can I connect to a postgreSQL database into Apache Spark using scala? but when I try to start my app I get this Exception.

Exception in thread "main" java.lang.NoClassDefFoundError: org/postgresql/Driver
    at SparkRecommendationMatrix.<init>(SparkRecommendationMatrix.scala:31)
    at Main$.main(Main.scala:26)
    at Main.main(Main.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:292)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:55)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 10 more

My bild.sbt file:

name := "untitled12"

version := "1.0"

scalaVersion := "2.10.4"

libraryDependencies ++= Seq(
  "org.postgresql" % "postgresql" % "9.2-1003-jdbc4",
  "org.apache.spark" % "spark-mllib_2.10" % "1.0.0"
)

resolvers += "Akka Repository" at "http://repo.akka.io/releases/"

and my java code

val classes = Seq(
    getClass, // To get the jar with our own code.
    classOf[org.postgresql.Driver] // To get the connector.
  )

  val jars = classes.map(_.getProtectionDomain().getCodeSource().getLocation().getPath())

  // set up environment
  val conf = new SparkConf().setAppName(name).setJars(jars)
  //.setMaster("spark://192.168.10.122:7077")
  val sc = new SparkContext(conf)

解决方案

Download the postgresql Driver and add it to your classpath.

这篇关于不能老是运行,因为java.lang.NoClassDefFoundError的火花应用程序:组织/ PostgreSQL的/驱动器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆