2017-12-11 4 views
1

나는 sbt를 사용하여 내 scala 코드에서 jar를 구축했다 :sbt로 jar 파일을 빌드 할 수 있습니까?

name := "PSG CCD" 
version := "1.0" 
scalaVersion := "2.11.8" 

resolvers += "Spark Packages Repo" at "http://dl.bintray.com/spark-packages/maven" 

libraryDependencies ++= Seq(
     "org.apache.spark" %% "spark-core" % "2.2.0", 
     "org.apache.spark" %% "spark-sql" % "2.2.0", 
     "org.apache.spark" %% "spark-streaming" % "2.2.0", 
     "neo4j-contrib" % "neo4j-spark-connector" % "2.0.0-M2" 
) 

가 나는 또한 단지 벌금 jar를 구축 :

sudo sbt package 

그것은 내 빌드 파일을 사용했다. 그럼, 내 spark 서버에 FTP를 통해 그것을 전송하고 spark-submit 수행

spark-submit --class "PSGApp" --master local[4] psg_ccd.jar 

내가 얻을이 오류 : 나는 종속 파일에 neo4j-spark-connector이 비록 그래서

Exception in thread "main" java.lang.NoClassDefFoundError: org/neo4j/spark/Neo4j 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 
    at java.lang.Class.getMethod0(Class.java:3018) 
    at java.lang.Class.getMethod(Class.java:1784) 
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:739) 
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180) 
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
Caused by: java.lang.ClassNotFoundException: org.neo4j.spark.Neo4j 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    [truncated, 10 more messages] 

을, 그것은 '아무튼 spark을 통해 실행하면 찾지 못하는 것 같습니다. 이제 sparkjarscala에서 작성한 것과 다른 시스템에서 실행됩니다. 이게 중요합니까? 거기에 내가 복사하고 어딘가에 드롭해야 libs의 폴더가 있습니까?

neo4jspark의 라이브러리 정보를 추측하고 있습니다. 실행을 시도하고있는 jar에 연결 종속성이 내장되어 있지 않습니다.

아마도 강제로 스위치가 누락 되었습니까?

답변

관련 문제