java – Apache Spark:TaskResultLost(从块管理器丢失的结果)群
发布时间:2020-12-15 04:36:26 所属栏目:Java 来源:网络整理
导读:我有一个Spark独立群集,在Virtualbox上有3个从属.我的代码是在 Java上,它可以很好地处理我的小输入数据集,它们的输入总共大约为100MB. 我将我的虚拟机RAM设置为16GB但是当我在大输入文件(大约2GB)上运行我的代码时,我在我的reduce部分处理数小时后出现此错误
我有一个Spark独立群集,在Virtualbox上有3个从属.我的代码是在
Java上,它可以很好地处理我的小输入数据集,它们的输入总共大约为100MB.
我将我的虚拟机RAM设置为16GB但是当我在大输入文件(大约2GB)上运行我的代码时,我在我的reduce部分处理数小时后出现此错误: Job aborted due to stage failure: Total size of serialized results of 4 tasks (4.3GB) is bigger than spark.driver.maxResultSize` 我编辑了spark-defaults.conf并为spark.driver.maxResultSize分配了更高的数量(2GB和4GB).它没有帮助,同样的错误出现了. 不,我正在尝试8GB的spark.driver.maxResultSize和我的spark.driver.memory也与RAM大小(16GB)相同.但我得到这个错误: TaskResultLost (result lost from block manager) 对此有何评论?我还包括一个图像. 我不知道问题是由大尺寸的maxResultSize造成的,还是代码中包含RDD集合的东西.我还提供了代码的映射器部分以便更好地理解. JavaRDD<Boolean[][][]> fragPQ = uData.map(new Function<String,Boolean[][][]>() { public Boolean[][][] call(String s) { Boolean[][][] PQArr = new Boolean[2][][]; PQArr[0] = new Boolean[11000][]; PQArr[1] = new Boolean[11000][]; for (int i = 0; i < 11000; i++) { PQArr[0][i] = new Boolean[11000]; PQArr[1][i] = new Boolean[11000]; for (int j = 0; j < 11000; j++) { PQArr[0][i][j] = true; PQArr[1][i][j] = true; 解决方法
通常,此错误表明您正在将大量数据收集/带入驱动程序.永远不应该这样做.您需要重新考虑您的应用程序逻辑.
此外,您无需修改??spark-defaults.conf来设置属性.相反,您可以通过spark-shell或spark-submit中的–conf选项指定此类特定于应用程序的属性,具体取决于您运行作业的方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |