hbaserb
アプリケーションのログをparseしてHBaseに格納する為に、hbaserbというライブラリを使ってみました。hbaserbからHBaseを操作するのはThrift経由となる為、先にThriftの受け口を起動しておきます。
hbase-daemon.sh start thrift
tableもhbaserbで作成することはできますが、今回は予めhbase shellでtableを作っておき、データを保存してみました。
hbase(main):004:0> create 'hbaserb_test', 'data'
HBaseを操作するRubyのコードは以下です。
require 'rubygems' require 'hbaserb' client = HBaseRb::Client.new '127.0.1.1' table = client.get_table 'hbaserb_test' table.mutate_row 'row1', {'data:key1' => 'value1', 'data:key2' => 'value2'} table.mutate_row 'row2', {'data:key1' => 'hoge', 'data:key2' => 'foobar'} table.create_scanner('row1') do |row| row.columns.keys.each do |key| puts "#{key} => #{row.columns[key].value}" end end
上記コードを実行すると、以下のように表示されます。
masayuki@ubuntu-vm:~/work/ruby/hbaserb$ ruby test.rb data:key1 => value1 data:key2 => value2 data:key1 => hoge data:key2 => foobar
hbase shellからも保存したデータを確認することができます。
hbase(main):005:0> scan 'hbaserb_test' ROW COLUMN+CELL row1 column=data:key1, timestamp=1312999209128, value=value1 row1 column=data:key2, timestamp=1312999209128, value=value2 row2 column=data:key1, timestamp=1312999209130, value=hoge row2 column=data:key2, timestamp=1312999209130, value=foobar 2 row(s) in 0.2240 seconds