복붙노트

[HADOOP] Spio 작업이 java.io.NotSerializableException 때문에 실패했습니다 : org.apache.spark.SparkContext

HADOOP

Spio 작업이 java.io.NotSerializableException 때문에 실패했습니다 : org.apache.spark.SparkContext

RDD [(Int, ArrayBuffer [(Int, Double)])] 입력에 메서드 (ComputeDwt)를 적용하려고 할 때 예외가 발생합니다. 심지어는 직렬화 옵션을 사용하여 spark 객체를 직렬화합니다. 코드 스 니펫이 있습니다.

input:series:RDD[(Int,ArrayBuffer[(Int,Double)])] 
DWTsample extends Serialization is a class having computeDwt function.
sc: sparkContext

val  kk:RDD[(Int,List[Double])]=series.map(t=>(t._1,new DWTsample().computeDwt(sc,t._2)))

Error:
org.apache.spark.SparkException: Job failed: java.io.NotSerializableException: org.apache.spark.SparkContext
org.apache.spark.SparkException: Job failed: java.io.NotSerializableException: org.apache.spark.SparkContext
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:760)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:758)
at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:60)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:758)
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$submitMissingTasks(DAGScheduler.scala:556)
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$submitStage(DAGScheduler.scala:503)
at org.apache.spark.scheduler.DAGScheduler.processEvent(DAGScheduler.scala:361)
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$run(DAGScheduler.scala:441)
at org.apache.spark.scheduler.DAGScheduler$$anon$1.run(DAGScheduler.scala:149)

아무도 내게이 문제를 극복하기 위해 무엇이 문제 일 수 있으며 무엇을해야한다고 제안 할 수 있습니까?

해결법

  1. ==============================

    1.라인

    라인

    series.map(t=>(t._1,new DWTsample().computeDwt(sc,t._2)))
    

    SparkContext (sc)를 참조하지만 SparkContext는 직렬화 할 수 없습니다. SparkContext는 드라이버에서 실행되는 작업을 표시하도록 설계되었습니다. 작업자에게 실행되는 코드는이를 참조하거나 사용할 수 없습니다.

    sc가 맵 함수 클로저에서 참조되지 않도록 코드를 다시 구조해야합니다.

  2. from https://stackoverflow.com/questions/23605542/spark-job-is-failed-due-to-java-io-notserializableexception-org-apache-spark-sp by cc-by-sa and MIT license