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