当你需要做一个非常大的洗牌时,Spark就会断开

yvfmudvl  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(379)

我正在处理1TB的数据,现在我需要连接两个较小的Dataframe,我不知道大小,但它有超过200GB,我得到下面的错误。
休息发生在手术中间2小时后。
在我看来,这似乎是一个记忆棒,但这是没有意义的,因为看看ui的spark ganglia,ram内存没有达到下面打印的限制。
有没有人知道我如何在不减少分析数据量的情况下解决这个问题。
我的集群有:1 x主节点n1-highmem-32 4 x从节点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]
ao218c7q

ao218c7q1#

这种类型的错误通常发生在某些任务存在更深层次的问题时,例如严重的数据倾斜。由于您没有提供足够的详细信息(请务必阅读如何提问以及如何创建一个最小的、完整的和可验证的示例)和作业统计信息,因此我唯一可以考虑的方法是显著增加无序分区的数量:
´´´ sqlcontext.setconf(“spark.sql.shuffle.partitions”,2048)
´´´

相关问题