我的问题并不是:
硬件 / 空间:
- 32 个 Xeon 线程,配备 ~256 GB RAM
- 大约有65 GB 的数据要上传。(约 56 亿个单元格)
问题:
将数据上传到 h2o 中需要数小时。这并不是任何特殊处理,只是使用 "as.h2o(...)"。
使用 "fread" 将文本放入空间只需不到一分钟,然后进行一些行/列转换(diff's, lags),然后尝试导入。
在尝试任何形式的 "as.h2o" 之前,总 R 内存为 ~56GB,因此分配的 128GB 不应该太疯狂,对吧?
问题:
我该怎么做才能使上传到 h2o 的时间少于一个小时?应该只需要一分钟到几分钟的时间。
我尝试过的:
- 将 "h2o.init" 中的 RAM 提高到 128 GB
- 使用 slam、data.table 和 options(...)
- 在 "as.h2o" 之前转换为 "as.data.frame"
- 写入 CSV 文件(r write.csv 卡住且需要很长时间。不过它确实要写很多 GB,所以我理解)
- 写入 sqlite3,但列数太多了,无法创建表格,这很奇怪。
- 检查驱动器缓存 / 交换文件是否有足够多的 GB。也许 java 正在使用缓存。(仍在进行中)
更新:
看起来我的唯一选择是制作一个巨大的文本文件,然后用 "h2o.importFile(...)"。我已经写了 15GB。
更新2:
这是一个巨大的 csv 文件,大小约为 22GB(约 240 万行,约 2300 列)。就它的价值而言,写入 csv 文件从下午12:53到下午2:44花费了相当长的时间。导入速度要快得多,在写入后。
options(h2o.use.data.table = TRUE)
。 - Hugh