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("[email protected]"); 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);
