복붙노트

[HADOOP] 스파크 예외 : 행을 쓰는 동안 작업을 수행하지 못했습니다.

HADOOP

스파크 예외 : 행을 쓰는 동안 작업을 수행하지 못했습니다.

나는 텍스트 파일을 읽고 parquet 파일로 변환 중이다. 나는 스파크 코드를 사용하고있다. 하지만 코드를 실행하려고하면 예외가 발생합니다.

org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 1.0 failed 4 times, most recent failure: Lost task 2.3 in stage 1.0 (TID 9, ukfhpdbivp12.uk.experian.local): org.apache.spark.SparkException: Task failed while writing rows.
    at org.apache.spark.sql.sources.InsertIntoHadoopFsRelation.org$apache$spark$sql$sources$InsertIntoHadoopFsRelation$$writeRows$1(commands.scala:191)
    at org.apache.spark.sql.sources.InsertIntoHadoopFsRelation$$anonfun$insert$1.apply(commands.scala:160)
    at org.apache.spark.sql.sources.InsertIntoHadoopFsRelation$$anonfun$insert$1.apply(commands.scala:160)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:63)
    at org.apache.spark.scheduler.Task.run(Task.scala:70)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArithmeticException: / by zero
    at parquet.hadoop.InternalParquetRecordWriter.initStore(InternalParquetRecordWriter.java:101)
    at parquet.hadoop.InternalParquetRecordWriter.<init>(InternalParquetRecordWriter.java:94)
    at parquet.hadoop.ParquetRecordWriter.<init>(ParquetRecordWriter.java:64)
    at parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:282)
    at parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:252)
    at org.apache.spark.sql.parquet.ParquetOutputWriter.<init>(newParquet.scala:83)
    at org.apache.spark.sql.parquet.ParquetRelation2$$anon$4.newInstance(newParquet.scala:229)
    at org.apache.spark.sql.sources.DefaultWriterContainer.initWriters(commands.scala:470)
    at org.apache.spark.sql.sources.BaseWriterContainer.executorSideSetup(commands.scala:360)
    at org.apache.spark.sql.sources.InsertIntoHadoopFsRelation.org$apache$spark$sql$sources$InsertIntoHadoopFsRelation$$writeRows$1(commands.scala:172)
    ... 8 more

다음과 같은 방식으로 데이터 프레임을 작성하려고합니다.

dataframe.write().parquet(Path)

어떤 도움을 주셔서 감사합니다.

해결법

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

    1.또 다른 가능한 이유는 s3 요청 속도 제한을 초과한다는 것입니다. 로그를 면밀히 살펴보면 다음과 같은 내용을 볼 수 있습니다.

    또 다른 가능한 이유는 s3 요청 속도 제한을 초과한다는 것입니다. 로그를 면밀히 살펴보면 다음과 같은 내용을 볼 수 있습니다.

    AmazonS3Exception : 요청 속도를 줄이십시오.

    Spark UI에서

    행을 쓰는 동안 작업을 수행하지 못했습니다.

    나는 당신이 문제를 겪고있는 이유를 의심하지 만, 당신이 집중적 인 일을하고 있다면 그 이유가있을 수 있습니다. 그래서 나는 대답의 완성을 위해 포함시켰다.

  2. ==============================

    2.나는이 오류가 일어나지 못하게하는 추측을 발견했다. 나는 그 이유를 잘 모른다. 파르킷 행을 작성할 때 투기 및 비 투기 업무가 충돌하는 것으로 보입니다.

    나는이 오류가 일어나지 못하게하는 추측을 발견했다. 나는 그 이유를 잘 모른다. 파르킷 행을 작성할 때 투기 및 비 투기 업무가 충돌하는 것으로 보입니다.

    sparkConf.set("spark.speculation","false")
    
  3. ==============================

    3.스택 트레이스에서 코드 줄로 갈 수있는 IDE에 스택 추적을 붙여넣고 그 내용을 확인하십시오. 아마 그냥 init / config 문제 일 겁니다.

    스택 트레이스에서 코드 줄로 갈 수있는 IDE에 스택 추적을 붙여넣고 그 내용을 확인하십시오. 아마 그냥 init / config 문제 일 겁니다.

  4. ==============================

    4.혹시라도 여전히 관련성이있다면,이 문제에 관해 내가 경험 한 것은 내가 hadoop을 시작하지 않았다는 것입니다. 만약 당신이 그것의 위에 스파크를 실행, 그것은 가치관을 시작하고 다시 확인 가치가있을 수 있습니다.

    혹시라도 여전히 관련성이있다면,이 문제에 관해 내가 경험 한 것은 내가 hadoop을 시작하지 않았다는 것입니다. 만약 당신이 그것의 위에 스파크를 실행, 그것은 가치관을 시작하고 다시 확인 가치가있을 수 있습니다.

  5. ==============================

    5.필자의 경우 다른 사용자가 속한 hdfs 디렉토리를 덮어 쓰려고 할 때이 오류가 발생했습니다. 디렉토리를 삭제하면 내 프로세스가 처음부터 그것을 쓸 수있게되어 해결됩니다. 그래서 더 많은 파고가 hdfs에 대한 사용자 권한의 방향에 적절하다고 생각합니다.

    필자의 경우 다른 사용자가 속한 hdfs 디렉토리를 덮어 쓰려고 할 때이 오류가 발생했습니다. 디렉토리를 삭제하면 내 프로세스가 처음부터 그것을 쓸 수있게되어 해결됩니다. 그래서 더 많은 파고가 hdfs에 대한 사용자 권한의 방향에 적절하다고 생각합니다.

  6. from https://stackoverflow.com/questions/36034928/spark-exception-task-failed-while-writing-rows by cc-by-sa and MIT license