使用mllib RandomForest训练数据时出错。由于我的数据集很大,默认分区相对较小。所以抛出异常表示“Size超过Integer.MAX_VALUE”,原始堆栈跟踪如下,
15/04/16 14:13:03 WARN scheduler.TaskSetManager:失去的任务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)at org.apache.spark.storage.DiskStore.getBytes(DiskStore.scala:123)at at org.apache.spark.storage.DiskStore.getBytes(DiskStore.scala:132)at at 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中的限制设置配置