状況は次のとおりです。基本的には、Writable インターフェースを実装する java.util.Set のラッパーである SetWritable クラスを作成しました。1 つの列ファミリーと 1 つの列を持つ HBase テーブルがあり、その列の値はシリアル化された SetWritable オブジェクトです。今、要素をセットに追加したい場合は、HBase から行をプルし、それを SetWritable にデシリアライズし、要素を追加し、SetWritable をシリアライズしてから、HBase にプッシュする必要があります。したがって、これは、マッパーと HBase の間で非常に多くの通信が行われることを意味します。大規模なデータセットを扱っているので、パフォーマンスが低下する可能性があります。
私がやりたいことは、新しい要素を HBase に送信し、HBase サーバー上に SetWritable を逆シリアル化し、要素を追加し、SetWritable をシリアル化し、コミットするコードを配置することです。これは可能ですか?コプロセッサーは役に立ちますか?
別のアイデア: セットを 1 つの列にシリアル化する代わりに、セットの既知の要素ごとに列を作成できます。1 つの欠点 : 数十万 (または数百万) の列になる可能性があります。これは問題ですか?