2017-06-18 15 views
3

私はRでモデリングするためにh2oパッケージを使用しています。このために、h2o.importfile()を使用して約1.5GBのデータセットを読みたいと思います。私はラインh2oで大きな(1.5GB)ファイルを読み込むR

library(h2oEnsemble) 
h2o.init(max_mem_size = '1499m',nthreads=-1) 

これは、ログ

H2O is not running yet, starting it now... 
java version "1.8.0_121" 
Java(TM) SE Runtime Environment (build 1.8.0_121-b13) 
Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode) 

Starting H2O JVM and connecting: . Connection successful! 

R is connected to the H2O cluster: 
H2O cluster uptime:   3 seconds 665 milliseconds 
H2O cluster version:  3.10.4.8 
H2O cluster version age: 28 days, 14 hours and 36 minutes 
H2O cluster name:   H2O_started_from_R_Lucifer_jvn970 
H2O cluster total nodes: 1 
H2O cluster total memory: 1.41 GB 
H2O cluster total cores: 4 
H2O cluster allowed cores: 4 
H2O cluster healthy:  TRUE 
H2O Connection ip:   localhost 
H2O Connection port:  54321 
H2O Connection proxy:  NA 
H2O Internal Security:  FALSE 
R Version:     R version 3.3.2 (2016-10-31)` 

次の行がこの問題を解決する方法について train=h2o.importFile(path=normalizePath("C:\\Users\\All data\\traindt.rds"))

DistributedException from localhost/127.0.0.1:54321, caused by java.lang.AssertionError 

DistributedException from localhost/127.0.0.1:54321, caused by java.lang.AssertionError 
at water.MRTask.getResult(MRTask.java:478) 
at water.MRTask.getResult(MRTask.java:486) 
at water.MRTask.doAll(MRTask.java:402) 
at water.parser.ParseDataset.parseAllKeys(ParseDataset.java:246) 
at water.parser.ParseDataset.access$000(ParseDataset.java:27) 
at water.parser.ParseDataset$ParserFJTask.compute2(ParseDataset.java:195) 
at water.H2O$H2OCountedCompleter.compute(H2O.java:1315) 
at jsr166y.CountedCompleter.exec(CountedCompleter.java:468) 
at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263) 
at jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974) 
at jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1477) 
at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104) 
Caused by: java.lang.AssertionError 
at water.parser.Categorical.addKey(Categorical.java:41) 
at water.parser.FVecParseWriter.addStrCol(FVecParseWriter.java:127) 
at water.parser.CsvParser.parseChunk(CsvParser.java:133) 
at water.parser.Parser.readOneFile(Parser.java:187) 
at water.parser.Parser.streamParseZip(Parser.java:217) 
at water.parser.ParseDataset$MultiFileParseTask.streamParse(ParseDataset.java:907) 
at water.parser.ParseDataset$MultiFileParseTask.map(ParseDataset.java:856) 
at water.MRTask.compute2(MRTask.java:601) 
at water.H2O$H2OCountedCompleter.compute1(H2O.java:1318) 
at water.parser.ParseDataset$MultiFileParseTask$Icer.compute1(ParseDataset$MultiFileParseTask$Icer.java) 
at water.H2O$H2OCountedCompleter.compute(H2O.java:1314) 
... 5 more 

Error: DistributedException from localhost/127.0.0.1:54321, caused by java.lang.AssertionError 

任意の助けてくれエラーを与えるが生成を使用してH2Oサーバを起動します? 注:1499MB以上のメモリを割り当てても、エラーが発生します(メモリを割り当てることはできません)。私は16GBのRAM環境を使用しています

編集:64ビットバージョンのJavaをダウンロードし、私のファイルをcsvファイルに変更しました。私はmax_mem_sizeを5Gに割り当てることができ、問題は解決されました。問題に直面している他の人のために

: 1.あなたが制限され、32ビットのJavaで実行されている次の行ライン

h2o.init(max_mem_size = '5g',nthreads=-1) 
+0

# loads a 'train' data.frame for example load("C:\\Users\\All data\\traindt.rds") # save as CSV write.csv(train, "C:\\Users\\All data\\traindt.csv") # import from CSV into H2O cluster directly train = h2o.importFile(path = normalizePath("C:\\Users\\All data\\traindt.csv")) 

別のオプションは.rdsファイルからRにロードしas.h2o()機能を使用することですこれを試して? https://github.com/h2oai/h2o-3/blob/master/h2o-docs/src/product/howto/FAQ.md – CPak

答えて

1
train=h2o.importFile(path=normalizePath("C:\\Users\\All data\\traindt.rds") 

.rdsファイルをロードしようとしていますか?それはh2o.importFile()で読めないRバイナリ形式なので、うまくいきません。トレーニングデータをH2Oに直接読み込むには、クロスプラットフォームのストレージ形式(CSV、SMVLightなど)でトレーニングデータを保存する必要があります。あなたが別の形式でのコピーを持っていない場合は、単にRから1を保存します。

# loads a `train` data.frame for example 
load("C:\\Users\\All data\\traindt.rds") 

# send to H2O cluster 
hf <- as.h2o(train) 
+1

rdsがおそらく圧縮されているため、csvファイルは10GBになる可能性があります。ただし、H2Oは* .csv.gzファイルを読み込むので、ファイルを再圧縮できます。大量のデータで 'as.h2o()'を使用するのではなく、このルートに進むことをお勧めします。たとえば、「唯一」に16GBがあれば、同時にRとH2Oを実行し、10GBのデータセットに十分なメモリを与えることはできません。 –

2

を実行する64ビットJDK 2の最新バージョンをダウンロードあなたはH2Oを始めることができる記憶。一つの手がかりは、それがより高いmax_mem_sizeで始まらないということです。別の手がかりは、それが "クライアントVM"と言うことです。

代わりに64ビットのJavaが必要です。 64ビット版では「Server VM」と表示されます。あなたがここからのJava 8 SE JDKをダウンロードすることができます:あなたが説明した内容に基づいて

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

、私はあなたが持っている一度お使いのシステム上で正常に動作しますこれは、max_mem_size =「6グラム」以上を設定することをお勧めします正しいバージョンのJavaがインストールされています。

関連する問題