列ファミリーのすべての行を反復処理し、各行内で列を数え、最大値と行キーを記録する「国勢調査」プログラムを作成しました。私は Hector クライアントでより多くの時間を費やしてきましたが、テストのために Pelops クライアントも作成しました。
基本的なフローは、RangeSlicesQuery を使用して行を反復し、次に各行で SliceQuery を使用して反復し、統計を収集することです。API が異なるだけで、Pelops でも同様に機能します。欠点は、バッファリングを手動で行う必要があり、行と列の両方のバッファ サイズを選択することです...私の現在のデータは 1,200 万行で、最大の列数は ~25K なので、しばらく時間がかかります...私の現在の構成では、取得しています1 秒あたり 25,000 行以上。
Hector の CountQuery を改善して発見する方法を探しています (Thrift クライアント get_count() を使用していると思います)。キーを繰り返し処理し (RangeSlicesQuery.setReturnKeysOnly() を使用)、各行キーで CountQuery を再利用する方が高速であると考えて、コードを修正しました。
遅くなっただけでなく、30 倍も遅くなりました。(1 秒あたり 900 行しか処理されませんでした)...
列を数えるより良い方法はありますか?