2016-10-09 3 views
1

사례를 보면 다음과 같습니다. 내가 평 스파크에서 파이썬 코드'JavaPackage'객체를 호출 할 수 없습니다.

내에서 자바 메소드를 호출 할 수 있어야이

내가이 ./pyspark --driver 수준의 경로/경로 같은 평 스파크를 시작 매우 쉬운 것 같다 /to/app.jar

및 pyspark 쉘에서

는이

 x=sc._jvm.com.abc.def.App 
     x.getMessage() 
     u'Hello' 
     x.getMessage() 
     u'Hello' 

이 잘 작동 할.

하지만 스파크 작업 서버 작업 :

나는 제공된 WordCountSparkJob.py의 예제를 사용

from sparkjobserver.api import SparkJob, build_problems 
from py4j.java_gateway import JavaGateway, java_import 

class WordCountSparkJob(SparkJob): 

def validate(self, context, runtime, config): 
    if config.get('input.strings', None): 
     return config.get('input.strings') 
    else: 
     return build_problems(['config input.strings not found']) 

def run_job(self, context, runtime, data): 
    x = context._jvm.com.abc.def.App   
    return x.getMessage() 

내 python.conf 나는 다음과 같은 오류가이

spark { 
jobserver { 
jobdao = spark.jobserver.io.JobSqlDAO 
} 

context-settings { 
python { 
paths = [ 
"/home/xxx/SPARK/spark-1.6.0-bin-hadoop2.6/python", 
"/home/xxx/.local/lib/python2.7/site-packages/pyhocon", 
"/home/xxx/SPARK/spark-1.6.0-bin-hadoop2.6/python/lib/pyspark.zip", 
"/home/xxx/SPARK/spark-1.6.0-bin-hadoop2.6/python/lib/py4j-0.9-src.zip", 
"/home/xxx/gitrepos/spark-jobserver/job-server-python/src/python /dist/spark_jobserver_python-NO_ENV-py2.7.egg" 
] 
} 
dependent-jar-uris = ["file:///path/to/app.jar"] 
} 
home = /home/path/to/spark 
} 

처럼 보인다

[2016-10-08 23:03:46,214] ERROR jobserver.python.PythonJob []   [akka://JobServer/user/context-supervisor/py-context] - From Python: Error while calling 'run_job'TypeError("'JavaPackage' object is not callable",) 
[2016-10-08 23:03:46,226] ERROR jobserver.python.PythonJob [] [akka://JobServer/user/context-supervisor/py-context] - Python job failed with error code 4 
[2016-10-08 23:03:46,228] ERROR .jobserver.JobManagerActor []  [akka://JobServer/user/context-supervisor/py-context] - Got Throwable 
    java.lang.Exception: Python job failed with error code 4 
    at spark.jobserver.python.PythonJob$$anonfun$1.apply(PythonJob.scala:85) 
    at scala.util.Try$.apply(Try.scala:161) 
    at spark.jobserver.python.PythonJob.runJob(PythonJob.scala:62) 
    at spark.jobserver.python.PythonJob.runJob(PythonJob.scala:13) 
    at  spark.jobserver.JobManagerActor$$anonfun$getJobFuture$4.apply(JobManagerActor.scala:288) 
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) 
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
[2016-10-08 23:03:46,232] ERROR .jobserver.JobManagerActor [] [akka://JobServer/user/context-supervisor/py-context] - Exception from job 942727f0-dd81-445d-bc64-bd18880eb4bc: 
java.lang.Exception: Python job failed with error code 4 
at spark.jobserver.python.PythonJob$$anonfun$1.apply(PythonJob.scala:85) 
at scala.util.Try$.apply(Try.scala:161) 
at spark.jobserver.python.PythonJob.runJob(PythonJob.scala:62) 
at spark.jobserver.python.PythonJob.runJob(PythonJob.scala:13) 
at spark.jobserver.JobManagerActor$$anonfun$getJobFuture$4.apply(JobManagerActor.scala:288) 
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) 
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
[2016-10-08 23:03:46,232] INFO k.jobserver.JobStatusActor [] [akka://JobServer/user/context-supervisor/py-context/$a] - Job 942727f0-dd81-445d-bc64-bd18880eb4bc finished with an error 
[2016-10-08 23:03:46,233] INFO r$RemoteDeadLetterActorRef [] [akka://JobServer/deadLetters] - Message [spark.jobserver.CommonMessages$JobErroredOut] from Actor[akka://JobServer/user/context-supervisor/py-context/$a#1919442151] to Actor[akka://JobServer/deadLetters] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. 

python.conf 파일에서 app-jar가 종속 jar-uris의 항목으로 있습니다. 여기에 뭔가가 누락 되었습니까?

+0

- 'run_job'TypeError ("JavaPackage'객체를 호출 할 수 없습니다.")를 호출하는 동안 오류가 발생했습니다. – codemugal

+0

같은 오류가 있습니다. 어떤 힌트를 주셔서 감사합니다. – Alex

답변

0

오류 "'JavaPackage' object is not callable"은 아마도 PySpark에서 jar 또는 클래스를 볼 수 없다는 의미입니다.

관련 문제