복붙노트

[HADOOP] saveAsTextFile을 사용하여 NullPointerException을 발생시킵니다.

HADOOP

saveAsTextFile을 사용하여 NullPointerException을 발생시킵니다.

RPE를 합치고 저장하려고 할 때 NPE가 표시됩니다.

코드는 로컬에서 작동하며 스칼라 셸의 클러스터에서 작동하지만 클러스터로 작업으로 제출할 때 오류가 발생합니다.

rdd에 null 데이터가 포함되어 있는지 확인하기 위해 take ()를 사용하여 인쇄를 시도했지만이 오류는 쉘에서 정상적으로 작동하므로 동일한 오류가 발생합니다.

나는 HDFS에 저장하고 변수의 전체 url 경로를 가지고 있습니다 - 모델은 MLLib 훈련 단계에서이 방법으로 잘 저장합니다.

어떤 아이디어가 많이 감사!

스칼라 코드 (전체 예측 함수) :

//Load the Random Forest
val rfModel = RandomForestModel.load(sc, modelPath)

//Make the predictions - Here the label is the unique ID of the point
val rfPreds = labDistVect.map(p => (p.label, rfModel.predict(p.features)))


//Collect and save
println("Done Modelling, now saving preds")
val outP = rfPreds.coalesce(1,true).saveAsTextFile(outPreds)
println("Done Modelling, now saving coords")
val outC = coords.coalesce(1,true).saveAsTextFile(outCoords)

스택 추적 :

    Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 6.0 failed 4 times, most recent failure: Lost task 0.3 in stage 6.0 (TID 40, XX.XX.XX.XX): java.lang.NullPointerException
    at GeoDistPredict1$$anonfun$38.apply(GeoDist1.scala:340)
    at GeoDistPredict1$$anonfun$38.apply(GeoDist1.scala:340)
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
    at scala.collection.Iterator$$anon$10.next(Iterator.scala:312)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)

해결법

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

    1.스파크 동작은 지연 변환과 동작으로 구분됩니다.

    스파크 동작은 지연 변환과 동작으로 구분됩니다.

    RDD에서 동작이 호출되면 RDD에서 지연된 변환이 수행됩니다. 따라서 변환을 실행하면 수행 할 작업으로 저장됩니다.

    saveAsTextFile 메소드는 맵 조작이 변환되는 동안 조치입니다.

    변환 단계에서 문제가 발생하면 변환이 호출 된 작업 단계 단계에서 문제로 표시됩니다.

    따라서지도 작업 중에 NPE 문제의 원인이 될 수있는 필드에 Null 값이있는 문제가있을 수 있습니다.

  2. from https://stackoverflow.com/questions/32923262/spark-nullpointerexception-with-saveastextfile by cc-by-sa and MIT license