Repartition()导致spark作业失败

2024-10-01 07:27:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个spark作业,它用下面的代码运行文件。但是,此步骤将在输出文件夹中创建多个文件。你知道吗

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)

以前有人遇到过这个错误吗?你能告诉我怎么解决这个问题吗?你知道吗


Tags: 文件runpyorginfobashapachejava
2条回答

我认为这与内存分配有关。最近您可能有更多的数据要处理,这可能会导致超时/偏斜等问题。。。你知道吗

任务中是否存在数据倾斜。你能检查一下吗。另外,请分享你的集群配置和你的spark提交内存参数。你知道吗

这似乎主要是执行者没有获得足够内存的问题。当您试图创建单个文件时,代码将需要足够的内存来支持无序写入。你知道吗

如果文件太大,主节点上的内存就会成为瓶颈。你知道吗

可能的解决办法是:

  1. 检查master的资源使用情况,如果是
    似乎被过度利用了。你知道吗
  2. 一个长期的解决方案是将依赖模块更新为 阅读部件文件以使任务可伸缩,然后就可以开始了 正在写入零件文件。你知道吗

相关问题 更多 >