ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

HBase Scan

2010-07-25 22:53:58 | PG(NoSQL)

HBaseScanクラスのお勉強。

Eclipse3.4でScanのソースを見ようとしたらよく固まっていた(フリーズしていた)が、Eclipse3.6に変えたらちゃんと見られるようになった^^

Scan自体は主に行キーの範囲とカラムを指定するものなので、非常にシンプル。
やっぱり次はフィルターの勉強が必要そうだ。

擬似環境でしか試してないのでsetCaching()の効果が不明だけど、いい資料を発見!
・GuutaraさんのHbaseのキャッシュ設定についてのTwitterのログ

HBase0.89で追加されたsetBatch()も似たような感じかなぁ…?
(しかしsetBatch()って名前、ちょっとひどくない? setCaching()ならなんとなくキャッシュに関係しそうだって分かるけど、batchって何だ(爆))

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBase ユニークcheckAndPut()

2010-07-14 00:52:24 | PG(NoSQL)

たつやさんからのHBase指摘事項、第2弾。

HTable#checkAndPut()の応用で、データ(レコード)が存在しない場合だけ登録する方法
(通常のput()では、データが存在していようといまいと登録できてしまうから。)
データが存在しない場合でもcheckAndPut()で比較できるというのがミソ。へ~!

教えていただいた元記事を見ると、ROW(レコード)をロックしてみたりincrementColumnValue()を使ってみたりと、色々試行錯誤された様子。
こうして出来た最終結果を教えていただいて、ありがたいことです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBase incrementColumnValue()

2010-07-13 00:27:54 | PG(NoSQL)

たつやさんから指摘を受けて、HBaseのHTableのメソッドincrementColumnValue()の使用例を追加。
以前調べたときにこのメソッドの存在には気付いていたけれども、後回しにしてすっかり忘れていた^^;

ついでに、関連していると思われるHBase Shellのincrコマンドも実験。
HBase Shell上は基本的に文字列でデータを扱っているが、incrはlong型で扱うようだ。
HBase0.89.20100621で追加されたget_counterコマンドは、incrで加算した値を表示する為に存在しているような気がする。

ところで、incrコマンドをqualifierの無い列ファミリーに対して使うと例外が発生する…。(Java APIのincrementColumnValue()では問題なさげ)
HBase0.20.5でも同様に例外が発生するけれどもちょっと違う点もあるので、新たなバグが埋め込まれているのかも?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBase MultiTableOutputFormat

2010-07-12 01:36:27 | PG(NoSQL)

HBase 0.89.20100621の調査の続き。今度はHadoop関連のmapreduceパッケージのクラス

いろいろクラスが追加されているけれども、プログラマーにとって一番大きいのはMultiTableOutputFormatかな。
TableOutputFormatは最初にjob(conf)に対してテーブル名をセットしておくので、1つのテーブルしか更新できない。
MultiTableOutputFormatは出力キーにテーブル名を出力するので、複数のテーブルが更新できる。

それと、TableRecordReader(TableRecordReaderImpl)がTableInputFormat(TableInputFormatBase)の内部クラスからトップレベルのクラスに外出しになったので、これを使っていた人には影響大。

他に追加されたPutSortReducer・SimpleTotalOrderPartitionerはHFileOutputFormatによるバルクロード(ってHBaseでも言うのかな?)に関連したクラス。
ちなみに、PutSortReducerやKeyValueSortReducerの中で使っているローカル変数indexには、何の意味があるんだろう? インクリメントしてるんだったら分かるんだが…。

廃止されたクラスは、Apache Lucene(ルシーン)に関連したクラスのようだ。
クラス名に「Index」って付いていたけれども、テーブルの索引じゃなくてLucene用の索引のことらしいから、まぎらわしかったよね(苦笑)

今回HBase用にWordCountのプログラムを書いてみたけれど、WordCountってデータの準備が楽だなー。違和感のある例だと思っていたけれども、意外といい題材なのかもしれない。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBase checkAndDelete()

2010-07-11 03:26:14 | PG(NoSQL)

HBase0.89.20100621で追加されたデータ操作メソッドは、結局HTable#checkAndDelete()くらいのようだ。

あ、一応HTable#get()に関しては、Result#getValue(byte[] column)が廃止になっていたけれども。

Putと同じパッケージに新しく追加されたMultiPutというクラスは、HBaseが内部で使用するクラスであって、Putの様にプログラマーが使用するクラスではないようだ。

これを自分のウェブページに反映させる為に、ページ構成をちょっと変更。
あまりバージョンに関して意識した構成をしてなかったから、面倒なことに…(汗)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする