【发布时间】:2015-06-23 17:52:55
【问题描述】:
使用 mllib RandomForest 训练数据时出现错误。由于我的数据集很大,而默认分区相对较小。所以抛出一个异常,表明“Size超过Integer.MAX_VALUE”,原始堆栈跟踪如下,
15/04/16 14:13:03 WARN scheduler.TaskSetManager: Lost task 19.0 in 阶段 6.0(TID 120、10.215.149.47): java.lang.IllegalArgumentException:大小超过 Integer.MAX_VALUE
在 sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:828) 在 org.apache.spark.storage.DiskStore.getBytes(DiskStore.scala:123) 在 org.apache.spark.storage.DiskStore.getBytes(DiskStore.scala:132) 在 org.apache.spark.storage.BlockManager.doGetLocal(BlockManager.scala:517) 在 org.apache.spark.storage.BlockManager.getLocal(BlockManager.scala:432) 在 org.apache.spark.storage.BlockManager.get(BlockManager.scala:618) 在 org.apache.spark.CacheManager.putInBlockManager(CacheManager.scala:146) 在 org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:70)
Integer.MAX_SIZE 为 2GB,似乎是某个分区内存不足。所以我将我的 rdd 分区重新分区为 1000,以便每个分区可以像以前一样保存更少的数据。终于,问题解决了!!!
所以,我的问题是: 为什么分区大小有2G限制? spark中的limit好像没有设置配置
【问题讨论】:
标签: scala apache-spark rdd