2016-03-25 11 views
1

私は自分のプロジェクト(Java)でテストするためにcassandraユニットを使用していますが、問題はあります:テストデータの読み込みにはかなりの時間がかかります(〜25 000プレーンインサートの場合100秒)。テストデータをキャッサンドラユニットに一番速く充填する方法は?

私はいくつかのアイデアを持っているが、それらはカサンドラユニットのための実現可能であるように思えません:CSV

  • からバックアップ準備したデータフォルダをデータをコピーし、それを与えるからcqlsh COPYコマンドのようなものを

    • 使用初期化時のCU。

    他にもアイデアはありますか?おかげさまで

  • +0

    上記のデータが変更されてもこれらのテストで読み取られるこのデータを持つスタンドアロンのインスタンスを持つことができます。また、バッチがどのようにキャッサンドラ単位で動作するかを確認することもできます。クラスタ環境のバッチはマルチパーティショニング挿入には適していません。 – mmatloka

    答えて

    1

    すべてを一度に大量のデータをロードする方法は使用することですunlogged batch mechanism

    BEGIN UNLOGGED BATCH 
    INSERT INTO ...; 
    INSERT INTO ...; 
    INSERT INTO ...; 
    ... 
    APPLY BATCH; 
    

    それは速くないかもしれませんが、テスト目的のために、それが問題になることはありません、あなたはタイムアウトを避ける必要がありますINSERTの直線集合が生成される可能性があります(ログファイルをいっぱいにして、それ以降、Cassandraがデータを受け入れなくなるため)。

    +0

    このようなアプローチは私にエラーをもたらします: 不一致入力 ';' K_APPLYを期待しています 削除された ';' 'UNLOGGED BATCH'の後にエラーがあります。不一致入力 '' K_APPLYがありません – Jack

    +0

    申し訳ありませんが、私は 'BATCH'キーワードの後に​​'; 'を入れてはいけません。また、 '...'は必要に応じて他の 'INSERT'を追加することを意味していますので、あなたの指示リストに入れなかったと思います。このリンクには追加のドキュメントがあります( 'BATCH'で利用可能な機能がたくさんあります)。これはCassandra 2.0以降でも動作します。 –