H2O数据框中的列限制?

时间:2017-06-28 12:52:31

标签: r apache-spark h2o

我正在使用R中的数据集,其中包含42,457行和785列。第一列是二进制响应变量(称为label),其余列是二进制特征。

我尝试使用rsparkling(描述为here)来拟合逻辑回归模型,但却出错了。我将此跟踪到将此表的Spark版本转换为H2O数据框的步骤。

这是我用于测试的功能。 Spark实例sc已启动并正在运行,df是原始数据集作为标准R数据框:

load_h2o <- function(df, rows = nrow(df), cols = ncol(df)) {
        df <- df[1:rows, 1:cols]
        copy_to(sc, df, "df", overwrite = TRUE)
        df_tbl <- tbl(sc, "df")
        h2o_tbl <- as_h2o_frame(sc, df_tbl, strict_version_check=FALSE)
        return(h2o_tbl)
}

df$label的负责人是1 1 1 0 0 0。但是,如果我加载完整的数据集,即load_h2o(raw_data),则生成的label列的标题为0 0 0 0 0 0;事实上,H2O数据框中的所有值都是0.如果我将列数限制为200(即load_h2o(raw_data, cols = 200)),则生成的H2O数据框包含所需的所有数据。如果cols = 201,我们将返回全零。

最后,如果我使用h2o::h2o.importFile直接从磁盘加载数据集,那么完整的数据集没有问题,我能够适应逻辑回归。但是,我希望能够从R数据框加载它,以便在包中分发对象。

此工作流程的最大列数是否有限制?

2 个答案:

答案 0 :(得分:0)

我们正在使用Spark 1.6.2,我相信这是known bug

答案 1 :(得分:0)

H2O中没有明确的列限制(当然不是785,这不是很大)。 Spark 1.6现在很老了,我建议继续前进。

看看您所看到的内容是否与此问题有关:

https://0xdata.atlassian.net/browse/PUBDEV-3808

如果是这样,发现的一个解决方法是将.cache()中的数据帧传递给H2O。