我试图通过从火花镶木地板文件创建一个h2o框架导入一个框架 . 文件是2GB有大约12M行和稀疏向量有12k列 . 它不是那么大的镶木地板格式,但进口需要永远 . 在h2o中,它实际上报告为447mb压缩大小 . 实际上很小 .
我做错了,当我真正完成导入(花了39分钟)时,是否有任何形式在h2o中将帧保存到磁盘以便下次快速加载?
我知道h2o在场景背后做了一些魔术需要很长时间,但我只发现了一个下载csv选项,对于一个11k x 1M的稀疏数据来说速度很慢而且很大,我怀疑它导入的速度更快 .
我觉得有一部分缺失 . 任何有关h2o数据导入/导出的信息都表示赞赏 . 模型保存/加载工作很好但是训练/ val /测试数据加载似乎是一个不合理的缓慢程序 .
我有10个火花工,每个10克,并给了司机8克 . 这应该是充足的 .
2 回答
使用
h2o.exportFile()
(在Python中为h2o.export_file()
),parts
参数设置为-1 . -1有效意味着集群中的每台机器只会导出自己的数据 . 在你的情况下,你最终会得到10个文件,它应该比其他文件快10倍 .要重新读取它们,请使用
h2o.importFile()
并在加载时指定所有10个部分:通过提供一个文件数组,它们将被并行加载和解析 .
对于本地LAN群集,建议使用HDFS . 在EC2上运行集群时,通过将文件保留在S3上,我得到了合理的结果 .
我建议将Spark中的数据帧导出为SVMLight文件格式(参见MLUtils.saveAsLibSVMFile(...) . 这种格式可以由H2O本机摄取 .
正如Darren指出的那样,你可以从多个部分输出H2O数据,从而加快出口速度 . 但是,H2O目前仅支持导出到CSV文件 . 对于非常稀疏数据的用例,这是次优的 . 可以通过Java API访问此功能: