我在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,仍然给出了错误。必须是除大小之外的数据集的唯一内容。
更新:错误是由数据集中的列数引起的。当我在1689年的火花数据框中运行带有多列的as_h2o_frame
时,我得到了错误。 1689或更少的列,没有错误。
由于错误消息似乎来自R,因此错误更可能是R或sparklyr问题,而不是H2O中的错误。但是,如果您可以使用可重现的代码示例和日志(如果可能)将此问题发布到苏打水repo,则可以检查问题,并且更容易识别导致错误的程序包并将错误指向正确项目。