我的Apache job-server和我的.jar与SparkJob有问题。
我有VirtualBox和DataStax。有Cassandra和Spark。我从git job-server安装Apache作业服务器。我想运行示例,所以我写sbt job-server-tests/package
,然后从终端sbt re-start
作业服务器工作的示例
curl --data-binary @/home/job-server/job-server-tests/target/job.jar localhost:8090/jars/test
curl -d "" 'localhost:8090/jobs?appName=test&classPath=spark.jobserver.LongPiJob'
问题是当我制作我的.jar时
我使用Scala IDE在Windows上使用eclipse。我安装了sbteclipse插件,并使用scala项目创建了文件夹C:\Users\user\scalaWorkspace\LongPiJob
。我运行cmd,转到此文件夹并运行sbt eclipse
sbt compile
和sbt package
。然后我将.jar复制到VirtualBox。接下来我使用 1 。卷曲命令。当我使用 2 时。 curl命令我收到错误
job-server [ERROR]线程“pool-25-thread-1”中的异常java.lang.AbstractMethodError:com.forszpaniak.LongPiJob $ .validate(Ljava / lang / Object; Lcom / typesafe / config / Config; )Lspark / jobserver / SparkJobValidation; spark.jobserver.JobManagerActor上的job-server [错误] $$ anonfun $ spark $ jobserver $ JobManagerActor $$ getJobFuture $ 4.apply(JobManagerActor.scala:225) scala.concurrent.impl.Future上的job-server [ERROR] $ PromiseCompletingRunnable.liftedTree1 $ 1(Future.scala:24) scala.concurrent.impl.Future $ PromiseCompletingRunnable.run(Future.scala:24)中的job-server [ERROR] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)中的作业服务器[错误] java.util.concurrent.ThreadPoolExecutor上的job-server [错误] $ Worker.run(ThreadPoolExecutor.java:615) java.lang.Thread.run上的job-server [ERROR](Thread.java:745)
在我启动服务器的终端中。在curl终端,我得到
[root @ localhost spark-jobserver] #curl -d“stress.test.longpijob.duration = 15”'localhost:8090 / jobs?appNametestJob1.5& classPath = com.forszpaniak.LongPiJob' { “状态”:“错误”, “结果”:{ “消息”:“在[10000 ms]”之后询问[Actor [akka://JobServer/user/context-supervisor/4538158c-com.forszpaniak.LongPiJob#-713999361]]时间, “errorClass”:“akka.pattern.AskTimeoutException”, “stack”:[“akka.pattern.PromiseActorRef $$ anonfun $ 1.apply $ mcV $ sp(AskSupport.scala:333)”,“akka.actor.Scheduler $$ anon $ 7.run(Scheduler.scala:117)” ,“scala.concurrent.Future $ InternalCallbackExecutor $ .scala $ concurrent $ Future $ InternalCallbackExecutor $$ unbatchedExecute(Future.scala:694)”,“scala.concurrent.Future $ InternalCallbackExecutor $ .execute(Future.scala:691)”, “akka.actor.LightArrayRevolverScheduler $ TaskHolder.executeTask(Scheduler.scala:467)”,“akka.actor.LightArrayRevolverScheduler $$ anon $ 8.executeBucket $ 1(Scheduler.scala:419)”,“akka.actor.LightArrayRevolverScheduler $$ anon $ 8.nextTick(Scheduler.scala:423)“,”akka.actor.LightArrayRevolverScheduler $$ anon $ 8.run(Scheduler.scala:375)“,”java.lang.Thread.run(Thread.java:745)“] }
我的.jar我使用示例LongPiJob.scala中的代码。我已经搜索了一些有关此服务器错误的信息,我认为它可能是版本问题?
java.lang.AbstractMethodError:com.forszpaniak.LongPiJob $ .validate(Ljava / lang / Object; Lcom / typesafe / config / Config;)Lspark / jobserver / SparkJobValidation;
我认为对象应该是SparkContext ...
我用 DataStax:4.6 job-server:0.5.1 斯卡拉:2.10.4 sbt:0.13 火花:1.1.0
答案 0 :(得分:4)
Spark JobServer 0.5.1与spark 1.3.0兼容,您使用的是1.1.0。我会先尝试将其改为0.4.1。
Version Spark Version
0.3.1 0.9.1
0.4.0 1.0.2
0.4.1 1.1.0
0.5.0 1.2.0
0.5.1 1.3.0
然后,您可能希望修改startup_server.sh脚本,使其使用DSE类路径。这可以帮助您避免将来出现其他错误。
像
这样的东西dse spark-submit --class $MAIN $appdir/spark-job-server.jar --driver-java-options "$GC_OPTS $JAVA_OPTS $LOGGING_OPTS" $conffile 2>&1 &
这是一个repo,我修改了服务器启动脚本以使用DSE(4.7但它应该类似于4.6)
https://github.com/RussellSpitzer/spark-jobserver/blob/DSP-47-EAP3/bin/server_start.sh