转换数据帧时R H2O中的C堆栈使用错误

时间:2018-08-29 23:14:02

标签: r h2o sparklyr

我在R中使用sparklyr和H2O来实现开发一些ML模型。读取初始数据时出现错误。我使用spark_read_csv提取数据,使用sdf_partition设置分区,然后使用as_h2o_frame

定义H2O数据帧
df <- spark_read_csv(sc,
                     "frame_name",                                       
                     "aPathToData.csv")

partitions <- df %>% sdf_partition(training = 0.6, 
                               test_validate = 0.4,
                               seed=12)

train_set    <- as_h2o_frame(sc, 
                             partitions$training,
                             name="train_set")

这将返回错误:

  

错误:C堆栈使用率38903392太接近限制了

我已经在一个较小的数据集上成功运行了此精确代码:145 mb vs我当前的csv(2.3 gb)。仍然,我有32 gb的内存,这似乎不是数据集的大小,我扔掉了大部分行并将其减小到32mb,仍然给出了错误。对于数据集,必须是大小以外的唯一内容。

更新:该错误是由于数据集中的列数引起的。当我在火花数据框中的多个列上运行as_h2o_frame超过1689时,出现错误。 1689或更少的列,没有错误。

1 个答案:

答案 0 :(得分:1)

由于错误消息似乎来自R,因此错误很可能是R或sparklyr问题,而不是H2O中的错误。但是,如果您可以使用可复制的代码示例和日志(如果可能)将问题发布到苏打水repo上,则可以对问题进行审核,这样可以更轻松地确定哪个包导致了错误并直接进行处理。错误的正确项目。