2016-09-10 3 views
0

4ノードH2Oクラスターに20個のフレームがあるとします:a1..a5、b1..b5、c1..c5、d1..d5。私はそれらを1つの大きなフレームに結合して、そこからモデルを構築したいと思います。 、引数のためにrbindの前のcbind、またはcbindの前のrbind?

h2o.cbind(
    h2o.rbind(a1, a2, a3, a4, a5), 
    h2o.rbind(b1, b2, b3, b4, b5), 
    h2o.rbind(c1, c2, c3, c4, c5), 
    h2o.rbind(d1, d2, d3, d4, d5) 
) 

1:

h2o.rbind(
    h2o.cbind(a1, b1, c1, d1), 
    h2o.cbind(a2, b2, c2, d2), 
    h2o.cbind(a3, b3, c3, d3), 
    h2o.cbind(a4, b4, c4, d4), 
    h2o.cbind(a5, b5, c5, d5) 
) 

あるいは、最初の行を結合する場合、列:

は、それが行を結合し、その後、列のセットを組み合わせた方が良いです/ 2/3/4/5はそれぞれ1カ月分のデータを表している可能性があります。そして、a/b/c/dは異なるフィーチャセットであり、別々にインポートされた理由を再説明します。 a1..a5には1728の列があり、b1..b5には113の列があり、c1..c5には360の列があり、d1..d5は単一の列です(私がモデル化する答え)。 (H2Oはカラムデータベースなので、/ b/c/dの相対的なカラム数は関係ありませんか?)

「良い」とは、私は主に、ビッグデータのケースに興味があります。ビッグデータの場合、結合されたフレームが十分に大きく、私はそれをちょうどaaのメモリに収めることができません単一ノード。

+0

あなたのdownvoteでコメントを受け取るのに常に役立ちます。さもなければ、私はどのように明確ではないか、修正が必要なのかを知っていますか? –

答えて

2

私は現在、答えが:確かに問題ではないと確信しています。

ポイント1:質問の2つの例は同じです。これは、h2o.cbind()とh2o.rbind()の両方が遅延評価を使用するためです。したがって、どちらの方法でもすぐに戻り、何らかの操作を実行するまで何も起こりません。 (私は新しいフレームの作成を強制するnrow()ncol()を使用してきた - それはまた、私は私が期待したもの持っていることを確認することができます。)2

ポイント:私はH2Oで通知してきた開発者は、どちらの方法でもデータがコピーされるため、違いはありません(CPUまたはメモリ)。

ポイント3:適度に大きいcbind/rbindsでは、最終フレームサイズが17GB(圧縮サイズ)で、大きな速度差に気付きませんでした。これは厳密なものではありませんが、nrow()コマンドでコピーを完了するまでに30〜40秒以上待つことはありませんでした。

ボーナスヒント:する前に、構成部品を削除し、発生するコピーを強制的にポイント1に続いて、あなたがnrow()(または何でも)を呼び出す必要不可欠です。 all = rbind(parts)を実行した後にh2o.rm(parts)を入力した場合、nrow(all)にエラーが発生します(データが失われ、再度インポートする必要があります)。

関連する問題