HBaseを擬似分散環境で立てたので、ちょっとだけJavaクライアントプログラミングを。
言語にはClojureを使いました。今後、HBaseのJavaクライアントプログラミングは、Clojureでいこうと思います。理由は、Clojureをちゃんと使えるようになりたいから、それだけなのですが。
こちらの馬本に載っている、Javaクライアントプログラミングの最初の方を軽く真似。

- 作者: Lars George,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 1人 クリック: 9回
- この商品を含むブログ (5件) を見る
加えて、テーブルが存在しなかった場合に作成するプログラムにしてみました。
getting_started.clj
(use '[leiningen.exec :only (deps)]) (deps '[[org.apache.hbase/hbase-client "0.95.2-hadoop2"]]) (ns hbase.getting-started (:import (org.apache.hadoop.hbase HBaseConfiguration HTableDescriptor HColumnDescriptor) (org.apache.hadoop.hbase.client HBaseAdmin HTable Put) (org.apache.hadoop.hbase.util Bytes))) (def conf (HBaseConfiguration/create)) ;; テーブルが未存在の場合、テーブル作成 ;; テーブルが未存在の場合、テーブル作成 (let [admin (HBaseAdmin. conf) tableDesc (HTableDescriptor. "testtable")] (when-not (.tableExists admin (.getName tableDesc)) (.addFamily tableDesc (HColumnDescriptor. "colfam1")) (.createTable admin tableDesc))) ;; テーブルにデータをPut (with-open [table (HTable. conf "testtable")] (let [put (Put. (Bytes/toBytes "row1"))] (doto put (.add (Bytes/toBytes "colfam1") (Bytes/toBytes "qual1") (Bytes/toBytes "val1")) (.add (Bytes/toBytes "colfam1") (Bytes/toBytes "qual2") (Bytes/toBytes "val2"))) (.put table put)))
実行。
$ lein exec getting_started.clj 9 07, 2013 1:14:05 午前 org.apache.hadoop.conf.Configuration warnOnceIfDeprecated WARNING: hadoop.native.lib is deprecated. Instead, use io.native.lib.available log4j:WARN No appenders could be found for logger (org.apache.hadoop.security.authentication.util.KerberosName). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 9 07, 2013 1:14:06 午前 org.apache.hadoop.util.NativeCodeLoader <clinit> WARNING: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 9 07, 2013 1:14:06 午前 org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper <init> 情報: Process identifier=hconnection-0x5223dd3a connecting to ZooKeeper ensemble=localhost:2181 9 07, 2013 1:14:06 午前 org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper <init> 情報: Process identifier=catalogtracker-on-hconnection-0x5223dd3a connecting to ZooKeeper ensemble=localhost:2181
log4jの警告が出たりしていますが、とりあえず気にしない。
結果は、HBase Shellで確認。
hbase(main):014:0> list TABLE hbase:namespace testtable 2 row(s) in 0.0570 seconds => #<#<Class:0x322885a2>:0x495d114a> hbase(main):015:0> scan 'testtable' ROW COLUMN+CELL row1 column=colfam1:qual1, timestamp=1378484047821, value=val1 row1 column=colfam1:qual2, timestamp=1378484047821, value=val2 1 row(s) in 0.0250 seconds
ちゃんと、動いているようです。