加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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集合的东西.我还提供了代码的映射器部分以便更好地理解.

enter image description here

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选项指定此类特定于应用程序的属性,具体取决于您运行作业的方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读