2016-12-12 16 views
1

spark parquetファイルからh2oフレームを作成してフレームをインポートしようとしています。 ファイルは2GBで約12M行、疎ベクトルには12k colがあります。 それは寄木張りの形式ではそれほど大きくはありませんが、輸入は永遠にかかります。 h2oでは実際には447mbの圧縮サイズとして報告されています。実際にはかなり小さい。h2oスパークリングウォーターセーブフレームからディスクへ

私は間違っています。実際にインポートを完了すると(39分かかる)、次回の高速読み込みのためにフレームをディスクに保存するフォームがh2oにありますか?

私はh2oがとても長い時間を要するシーンの背後にあるいくつかの魔法を理解していますが、11k x 1Mの疎なデータでは遅くて巨大なダウンロードcsvオプションしか見つかりませんでした。

不足しているような気がします。 h2oデータのインポート/エクスポートに関する情報があれば幸いです。 モデルの保存/読み込みはうまくいくが、train/val/testデータの読み込みは不合理に遅い手順に思える。

私は10gのスパークワーカーを10gずつ持っていて、ドライバー8gを与えました。これはたくさんあるはずです。

答えて

0

parts引数を-1に設定して、h2o.exportFile()h2o.export_file()、Python)を使用してください。 -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

(:輸出をスピードアップし、複数の部品でH2Oは、しかし、H2Oは現在、唯一のCSVファイルへのエクスポートをサポートしています。これは非常にまばらなデータをご利用の場合の次善であるこの機能は、Java APIを介してアクセス可能で私はSparkでこのアプローチを使用していないので、使用できない理由があれば開発者の一人にチェックしています...) –

0

私はMLUtils.saveAsLibSVMFile(...)を参照してください。この形式はその後、ネイティブH2Oで摂取することができる(なSVMLightファイル形式にスパークからのデータフレームをエクスポートすることをお勧めします。

ダレンはあなたがからデータをエクスポートすることができます指摘したように。。。

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