Python 重新分区()导致spark作业失败
我有一个spark作业,它使用以下代码运行文件。但是,此步骤将在输出文件夹中创建多个文件Python 重新分区()导致spark作业失败,python,apache-spark,pyspark,apache-spark-1.6,Python,Apache Spark,Pyspark,Apache Spark 1.6,我有一个spark作业,它使用以下代码运行文件。但是,此步骤将在输出文件夹中创建多个文件 sampledataframe.write.mode('append').partitionBy('DATE_FIELD').save(FILEPATH) 因此,我开始使用下面的代码行对这些文件进行重新分区,并创建一个单独的文件 sampledataframe.repartition('DATE_FIELD').write.mode('append').partitionBy('DATE_FIELD').
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)
以前有人遇到过这个错误吗?您能告诉我如何解决这个问题吗?我想这与内存分配有关。最近,您可能需要处理更多数据,这可能会导致超时/偏斜等问题
任务中是否存在任何数据偏斜。你能检查一下吗。另外,请共享您的群集配置和spark提交内存参数。这似乎主要是执行者没有获得足够内存的问题。当您试图创建单个文件时,代码将需要足够的内存来支持无序写入 如果文件太大,主节点上的内存将成为瓶颈 可能的解决办法是:
似乎被过度利用了