什么原因导致R在处理大型数据集时崩溃?

时间:2018-04-05 20:37:55

标签: r apache-spark h2o

问题:

我有多个事务数据数据集,用于预测事件(二进制分类作为结果)。其中一个有10,587,989行,有23列。我试图以10倍cv和ctree(gradient boosting)运行package:party,但每次运行这些模型时我的系统都会崩溃。

设备:

16核,48 gig RAM,48 gig SWAP

问题:

即使在使用并行处理,添加更多内存,弹回系统之后,使用大型数据集导致R崩溃的原因是什么?

我尝试过的事情:

  • 通过doParallel启用并行处理,执行xgBoost 通过caret,我看到每个核心点亮,RAM和交换存在 通过Linux中的top函数充分利用但最终 每次都会崩溃。

  • 退回RStudio服务器,重新启动系统作为初始 机动,但问题仍然存在。

我确实发现有人在评论H2O。我还联系了一个供应商并要求他提供解决方案,他建议Sparkly,但你需要在服务器中使用Hadoop层来运行Sparkly。

1 个答案:

答案 0 :(得分:2)

  

我确实发现有人在评论H2O。我还联系了一个供应商并要求他提供解决方案,他建议Sparkly,但你需要在服务器中使用Hadoop层来运行Sparkly。

您的供应商有误;您不需要sparklyr / RSparkling的Hadoop层,只需Spark。

但是,您也可以跳过Spark层并直接使用H2O。这是最好的选择,根据我的经验,我认为你的硬件足以在10M行上训练H2O GBM。这是一个H2O R tutorial,显示了如何对GBM执行网格搜索。当你启动H2O时,只需确保从默认的4G增加内存:

h2o.init(max_mem_size = "48G")

H2O还支持XGBoost,这是另一种GBM实现,因此这是另一种选择。