복붙노트

[HADOOP] Spark 작업으로 제출 될 때 Spark RDD 맵의 NullPointerException

HADOOP

Spark 작업으로 제출 될 때 Spark RDD 맵의 NullPointerException

우리는 스파크 일자리 (스파크 2.0, hadoop 2.7.2)를 제출하려고하지만 어떤 이유로 인해 EMR에서 약간의 NPE를 받고 있습니다. 스칼라 프로그램처럼 모든 것이 잘 실행되므로 문제의 원인을 정확히 알 수 없습니다. 다음은 스택 추적입니다.

우리가 알 수있는 한 다음과 같은 방법으로 발생합니다.

def process(dataFrame: DataFrame, S3bucket: String) = {
  dataFrame.map(row =>
      "text|label"
  ).coalesce(1).write.mode(SaveMode.Overwrite).text(S3bucket)
}

우리는 spark 작업으로 제출할 때 작동하는 맵 기능으로 축소했습니다.

def process(dataFrame: DataFrame, S3bucket: String) = {
  dataFrame.coalesce(1).write.mode(SaveMode.Overwrite).text(S3bucket)
}

누구든지이 문제의 원인을 파악할 수 있습니까? 또한 어떻게 해결할 수 있습니까? 우리는 꽤 난처한 처지입니다.

해결법

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

    1.나는 당신이 작업자가 아닌 드라이버에만 존재하는 SparkContext 객체에 접근하려고 할 때 NullPointerException을 throw한다고 생각한다.

    나는 당신이 작업자가 아닌 드라이버에만 존재하는 SparkContext 객체에 접근하려고 할 때 NullPointerException을 throw한다고 생각한다.

    coalesce ()는 데이터를 다시 분할합니다. 하나의 파티션 만 요청하면 하나의 파티션에 모든 데이터를 집어 넣으려고 시도합니다 *. 따라서 응용 프로그램의 메모리 사용 공간에 많은 부담을 줄 수 있습니다.

    일반적으로 파티션을 1 개만 축소하지 않는 것이 좋습니다.

    자세한 내용은 다음을 참조하십시오. saveAsTextFile 및 this로 Spark NullPointerException.

  2. from https://stackoverflow.com/questions/38986776/nullpointerexception-in-spark-rdd-map-when-submitted-as-a-spark-job by cc-by-sa and MIT license