当您需要进行非常大的洗牌时,火花会中断

问题描述 投票:0回答:1

我正在处理 1 TB 的数据,现在我需要加入两个较小的数据帧,我不知道大小,但它有超过 200 GB,我收到以下错误。

2小时后操作中途出现中断。

在我看来它是一个记忆棒,但这没有意义,因为查看 UI Spark Ganglia,RAM 内存没有达到限制,如下图所示。

有谁知道如何在不减少分析数据量的情况下解决这个问题。

我的集群有: 1 个主节点 n1-highmem-32 4 个从节点 n1-highmem-32

 [org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in stage 482.1 failed 4 times, most recent failure: Lost task 3.3 in stage 482.1 (TID 119785, 10.0.101.141, executor 1): java.io.FileNotFoundException: /tmp/spark-83927f3e-4511-1b/3d/shuffle_248_72_0.data.f3838fbc-3d38-4889-b1e9-298f743800d0 (No such file or directory)
    at java.io.FileOutputStream.open0(Native Method)

        Caused by: java.io.FileNotFoundException: /tmp/spark-83927f3e-4511-1b/3d/shuffle_248_72_0.data.f3838fbc-3d38-4889-b1e9-298f743800d0 (No such file or directory)
      at java.io.FileOutputStream.open0(Native Method)
      at java.io.FileOutputStream.open(FileOutputStream.java:270)][1]
apache-spark shuffle large-data filenotfoundexception
1个回答
0
投票

当某些任务存在更深层次的问题(例如严重的数据偏差)时,通常会发生此类错误。由于您没有提供足够的详细信息和作业统计信息,我能想到的唯一方法是显着增加随机分区的数量:

sqlContext.setConf("spark.sql.shuffle.partitions", 2048)
© www.soinside.com 2019 - 2024. All rights reserved.