Repartition () приводит к сбою задания искры - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть искровое задание, которое запускает файл с кодом ниже.Однако на этом этапе создайте несколько файлов в выходной папке.

sampledataframe.write.mode('append').partitionBy('DATE_FIELD').save(FILEPATH)

Поэтому я начал использовать приведенную ниже строку кода для перераспределения этих файлов и получения одного единственного файла.

sampledataframe.repartition('DATE_FIELD').write.mode('append').partitionBy('DATE_FIELD').save(FILEPATH)

Этот код работал нормально в течение нескольких месяцев, но недавно начал давать сбой со следующей ошибкой.

[2019-09-26 16:15:48,030] {bash_operator.py:74} INFO - 19/09/26 16:15:48 WARN TaskSetManager: Lost task 48.0 in stage 1.0 (TID 812, aaa.bbb.io): org.apache.spark.SparkException: Task failed while writing rows
[2019-09-26 16:15:48,031] {bash_operator.py:74} INFO - at org.apache.spark.sql.execution.datasources.DynamicPartitionWriterContainer.writeRows(WriterContainer.scala:417)
[2019-09-26 16:15:48,031] {bash_operator.py:74} INFO - at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation$$anonfun$run$1$$anonfun$apply$mcV$sp$3.apply(InsertIntoHadoopFsRelation.scala:148)
[2019-09-26 16:15:48,031] {bash_operator.py:74} INFO - at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation$$anonfun$run$1$$anonfun$apply$mcV$sp$3.apply(InsertIntoHadoopFsRelation.scala:148)
[2019-09-26 16:15:48,031] {bash_operator.py:74} INFO - at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
[2019-09-26 16:15:48,031] {bash_operator.py:74} INFO - at org.apache.spark.scheduler.Task.run(Task.scala:89)
[2019-09-26 16:15:48,032] {bash_operator.py:74} INFO - at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:247)
[2019-09-26 16:15:48,032] {bash_operator.py:74} INFO - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[2019-09-26 16:15:48,032] {bash_operator.py:74} INFO - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[2019-09-26 16:15:48,032] {bash_operator.py:74} INFO - at java.lang.Thread.run(Thread.java:748)
[2019-09-26 16:15:48,032] {bash_operator.py:74} INFO - Caused by: java.io.IOException: FAILED_TO_UNCOMPRESS(5)

Кто-нибудь сталкивался с этой ошибкой раньше?Подскажите, пожалуйста, как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Это, в первую очередь, проблема, когда исполнителям не хватает памяти.Когда вы пытаетесь создать один файл, коду потребуется достаточно памяти для поддержки перемешанных записей.

Если файл становится слишком большим, память на главном узле становится узким местом.

Возможные решения:

  1. Проверьте использование ресурса для мастера и увеличьте его, если оно
    кажется чрезмерно загруженным.
  2. Долгосрочным решением было бы обновитьзависимые модули для чтения файлов деталей, чтобы сделать задачу масштабируемой, а затем вы можете начать писать файлы деталей.
0 голосов
/ 27 сентября 2019

Я думаю, это то, что вам нужно сделать с распределением памяти.В последнее время у вас может появиться больше данных для обработки, которые могут вызвать проблему, такую ​​как тайм-аут / асимметрия и т. Д. *

Есть ли асимметрия данных в любой задачеВы можете проверить это.Также, пожалуйста, поделитесь настройками вашей кластерной конфигурации и параметрами памяти для отправки.

...