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);

Reply via email to