Hector (または他のクライアント) を使用して、Cassandra で別の名前の列ファミリーのコピーを作成したいのですが、これを行う最速の方法はありますか?
ありがとう
Hector (または他のクライアント) を使用して、Cassandra で別の名前の列ファミリーのコピーを作成したいのですが、これを行う最速の方法はありますか?
ありがとう
cassandra hadoop 統合は、列ファミリー全体を読み取り、map reduce ジョブへの入力として使用します。また、列ファミリーに一括で出力することもできます。パッケージ内のコードを読んで、org.apache.cassandra.hadoop
何をすべきかを理解してください。
読み取りでは、どのトークンがどのノードにあるかを把握し、そのトークン範囲を使用してget_range_sliceを実行します (トークン範囲も管理可能なチャンクに分割します)。書き込みについては、SSTable を構築し、それを cassandra にアップロードすることで、上記のソリューションと同様のことを行います (または、Bulk* クラスを使用する場合は行うことができます)。
sstable2json を使用した上記の他の回答ははるかに効率的であると思われますが、これは機能します。
私の答えは、あなたがすでに行っていると言う行ごとの反復を含むことでした。それに対する私の唯一の改善点は、リクエストごとに複数のキー、したがって複数の行を取得するために KeySlice を使用することです。
sstable2json を使用してそれを読み取り、json2sstable を使用して新しい CF として書き戻すことができます。