Hello.
first of all, thanks to hbase members so much ,
you helped me a lot.
I wrote simple jdo module for hbase newbie. I wish this module can help
them.
Some features
- simple jdo(used reflection)
- HTable pool ( I already know HTablePool in habse )
- simple query classes ( insert,delete,update,select)
- some convinent mehtods.
- table sequence generator
I want to contribute this module to hbase
absolutely, I'll do upgrade that more than more.
again, thanks for help.
http://code.google.com/p/hbase-jdo/ (you can download sources here)
---------------------------------------------
AbstractHBaseDBO dbo = new HBaseDBOImpl();
//drop if table is already exist. if(dbo.isTableExist("user")){
dbo.deleteTable("user");
}
//create table dbo.createTableIfNotExist("user",HBaseOrder.DESC,"account");
//dbo.createTableIfNotExist("user",HBaseOrder.ASC,"account");
//create index. String[] cols={"id","name"};
dbo.addIndexExistingTable("user","account",cols);
//insert InsertQuery insert = dbo.createInsertQuery("user");
UserBean bean = new UserBean();
bean.setFamily("account");
bean.setAge(20);
bean.setEmail("ncanis@gmail.com");
bean.setId("ncanis");
bean.setName("ncanis");
bean.setPassword("1111");
insert.insert(bean);
//select 1 row SelectQuery select = dbo.createSelectQuery("user");
UserBean resultBean = (UserBean)select.select(bean.getRow(),UserBean.class);
// select column value. String value =
(String)select.selectColumn(bean.getRow(),"account","id",String.class);
// search with option (QSearch has EQUAL, NOT_EQUAL, LIKE) //
select id,password,name,email from account where id='ncanis' limit
startRow,20 HBaseParam param = new HBaseParam();
param.setPage(bean.getRow(),20);
param.addColumn("id","password","name","email");
param.addSearchOption("id","ncanis",QSearch.EQUAL);
select.search("account", param, UserBean.class);
// search column value is existing. boolean isExist =
select.existColumnValue("account","id","ncanis".getBytes());
// update password. UpdateQuery update = dbo.createUpdateQuery("user");
Hashtable<String, byte[]> colsTable = new Hashtable<String, byte[]>();
colsTable.put("password","2222".getBytes());
update.update(bean.getRow(),"account",colsTable);
//delete DeleteQuery delete = dbo.createDeleteQuery("user");
delete.deleteRow(resultBean.getRow());
//////////////////////////////////// // etc
// HTable pool with apache commons pool // borrow and release.
HBasePoolManager(maxActive, minIdle etc..) IndexedTable table =
dbo.getPool().borrow("user");
dbo.getPool().release(table);
// upload bigFile by hadoop directly. HBaseBigFile bigFile = new
HBaseBigFile();
File file = new File("doc/movie.avi");
FileInputStream fis = new FileInputStream(file);
Path rootPath = new Path("/files/");
String filename = "movie.avi";
bigFile.uploadFile(rootPath,filename,fis,true);
// receive file stream from hadoop. Path p = new Path(rootPath,filename);
InputStream is = bigFile.path2Stream(p,4096);