こないだ、HBaseのテーブルを読み込んで単語数をカウントするWordCountを作ってみたが、これは出力先を(HadoopそのもののWordCountと同じく)ファイルにしていた。
何故かと言うと、HBaseのテーブルに出力しようと思ったら、どういうテーブルレイアウトにすればいいか考えないといけないから。
という訳で、WordCountの出力結果を保持するテーブルはどういうレイアウトにすればいいか、いくつか案を考えてみた。
実際に分散環境で試している訳ではないので、どれがいいのかいまいち自信が持てないけれども(苦笑)
考えている中で気になったのは、HBaseのテーブルレイアウト(テーブル定義・設計書)って、どう書けばいいのか、ということ。
RDBなら論理項目名・物理項目名・データ型・制約といった辺りを表形式できれいに書くことが出来るが、HBaseではどう書けば分かりやすいだろう?
HBaseの場合、qualifier名は固定で決めておくことも出来るし、動的に入れることも出来るから難しい。
キー値だって複数の意味の値の複合になる場合が多そうだし。
データ型も、物理的にはバイナリー(バイト列)しか無いとしても、アプリケーションでどう使うのかは定義しておかないといけないし。
データのサンプルはCassandraの書き方でいいと思うんだけどな。
つまり、(テーブル名・)キー・列ファミリー名・qualifier・値を列とした表にする。