2016-12-12 45 views
1

我想通過從火花地板文件創建一個h2o幀來導入一個幀。 文件是2GB具有約12M行和稀疏矢量與12k色。 木地板格式並不是那麼大,但是導入需要永遠。 在h2o中它實際上報告爲447mb壓縮大小。其實很小。h2o閃閃發光的水保存幀到磁盤

我做錯了,當我真正完成導入(花了39分鐘),是否有任何形式在H20中保存幀到磁盤下次快速加載?

我知道h2o在現場需要這麼長時間纔會做一些魔術,但我只找到一個下載csv選項,對於11k x 1M稀疏數據來說速度很慢並且很大,我懷疑它的導入速度會更快。

我覺得有一部分缺失。任何關於h2o數據導入/導出的信息都會被讚賞。 模型保存/加載效果很好,但train/val /測試數據加載似乎是一個不合理的緩慢過程。

我得到10個sparkgorkers,每個10g,並給司機8克。這應該是很多。

回答

0

在Python中使用h2o.exportFile()h2o.export_file()),parts參數設置爲-1。 -1有效意味着羣集中的每臺機器只會導出自己的數據。在你的情況下,你最終會得到10個文件,而且應該比其他文件快10倍。

要回讀它們,使用h2o.importFile()並指定所有10份時加載:

frame <- h2o.importFile(c(
    "s3n://mybucket/my.dat.1", 
    "s3n://mybucket/my.dat.2", 
    ... 
)) 

通過給文件的數組,他們將被載入和並行解析。

對於本地LAN羣集,建議爲此使用HDFS。在EC2上運行羣集時,通過將文件保留在S3上,我獲得了合理的結果。

+0

(我沒有使用Spark的這種方法,所以我只是與其中一位開發人員進行覈對,看看是否有任何理由無法使用......) –

0

我建議到數據幀從星火導出到SVMLight文件格式(見MLUtils.saveAsLibSVMFile(...)。這種格式可以再原生H2O攝入。

由於達倫指出,你可以從中導出數據。在多個部分H2O從而加快了出口然而H2O目前只支持導出爲CSV文件,這是次優的非常稀疏的數據您的使用情況下,該功能是通過Java API訪問:

water.fvec.Frame.export(yourFrame, "/target/directory", yourFrame.key.toString, true, -1 /* automatically determine number of part files */)