使用NativeJavaAPI访问
NativeJavaAPI是最常规高效的访问方式,使用方法请参考
HbaseUtil.java
packagecom..common;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.;importorg.apache.hadoop.hbase.client.;importorg.apache.hadoop.hbase.util.Bytes;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;publicclassHbaseUtil{/获取配置@return/publicstaticConfigurationgetConfiguration(){Configurationconf=null;try{conf=HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum","116.196.81.217");conf.set("hbase.zookeeper.property.clientPort","2181");//Wecanalsoreadtheconfigfromfilesbelow//configuration.addResource(newPath("/etc/hbase/conf/hbase-site.xml"));//configuration.addResource(newPath("/etc/hadoop/conf/core-site.xml"));}catch(Exceptione){e.printStackTrace();}returnconf;}/创建连接@paramconf@return/publicstaticConnectiongetConnection(Configurationconf){//CreateConnectionandgetAdminholdoffConnectionconn=null;try{conn=ConnectionFactory.createConnection(conf);}catch(Exceptione){e.printStackTrace();}returnconn;}/获取admin@paramconn@return/publicstaticAdmingetAdmin(Connectionconn){Adminadmin=null;try{admin=conn.getAdmin();}catch(Exceptione){e.printStackTrace();}returnadmin;}/关闭连接@paramconn@paramadmin/publicstaticvoidclose(Connectionconn,Adminadmin){try{if(admin!=null){admin.close();}if(conn!=null}}catch(Exceptione2){e2.printStackTrace();}}/创建NameSpace@paramnameSpace/publicstaticvoidcreateNameSpace(StringnameSpace){System.out.println("CreatingNamespace:"+nameSpace);Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);try{NamespaceDescriptornsd=NamespaceDescriptor.create(nameSpace).build();admin.createNamespace(nsd);System.out.println("NamespaceCreated:"+nameSpace);}catch(Exceptione){e.printStackTrace();}finally{close(conn,admin);}}/NameSpace列表/publicstaticvoidlistNameSpace(){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);try{NamespaceDescriptor[]nameSpaceList=admin.listNamespaceDescriptors();System.out.println("ListofNamespaceavailableintheHBase");System.out.println("___________________________________________");for(NamespaceDescriptornameSpace:nameSpaceList){System.out.println(nameSpace);}}catch(Exceptione){e.printStackTrace();}finally{close(conn,admin);}}/创建表@paramtableName@paramcols/publicstaticvoidcreateTable(StringtableName,String[]cols){System.out.println("CreatingTable:"+tableName);Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);try{TableNametName=TableName.valueOf(tableName);if(admin.tableExists(tName)){System.out.println(tableName+"exists.");}else{HTableDescriptorhTableDesc=newHTableDescriptor(tName);for(Stringcol:cols){HColumnDescriptorhColumnDesc=newHColumnDescriptor(col);hTableDesc.addFamily(hColumnDesc);}admin.createTable(hTableDesc);}System.out.println("TableCreated:"+tableName);}catch(Exceptione){e.printStackTrace();}finally{close(conn,admin);}}/删除表@paramtableName/publicstaticvoiddeleteTable(StringtableName){System.out.println("DeleteTable:"+tableName);Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);try{TableNametName=TableName.valueOf(tableName);if(admin.tableExists(tName)){admin.disableTable(tName);admin.deleteTable(tName);}else{System.out.println(tableName+"notexists.");}System.out.println("TableDeleted:"+tableName);}catch(Exceptione){e.printStackTrace();}finally{close(conn,admin);}}/列出所有表/publicstaticvoidlistTables(){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);try{TableName[]tableList=admin.listTableNames();System.out.println("ListofTablesavailableintheHBase");System.out.println("___________________________________________");for(TableNametable:tableList){System.out.println(table);}}catch(Exceptione){e.printStackTrace();}finally{close(conn,admin);}}/删除数据@paramtableName@paramrowKey@paramcolFamily@paramcol/publicstaticvoiddelete(StringtableName,StringrowKey,StringcolFamily,Stringcol){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);//InstantiatingHTableclasstry{Tabletable=conn.getTable(TableName.valueOf(tableName));Deletedel=newDelete(Bytes.toBytes(rowKey));if(colFamily!=null){del.addFamily(Bytes.toBytes(colFamily));}if(colFamily!=null}/批量删除ListdeleteList=newArrayList();deleteList.add(delete);table.delete(deleteList);/table.delete(del);table.close();}catch(IOExceptione){e.printStackTrace();}finally{close(conn,admin);}}/删除数据@paramtableName@paramrowKey/publicstaticvoiddelete(StringtableName,StringrowKey){delete(tableName,rowKey,null,null);}/批量删除@paramtableName@paramrows/publicstaticvoiddelete(StringtableName,String[]rows){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);//InstantiatingHTableclasstry{Tabletable=conn.getTable(TableName.valueOf(tableName));Listlist=newArrayList();for(Stringrow:rows){Deleted=newDelete(row.getBytes());list.add(d);}if(list.size()>0){table.delete(list);}table.close();}catch(IOExceptione){e.printStackTrace();}finally{close(conn,admin);}}/写入数据@paramtableName@paramrowKey@paramcolFamily@paramcol@paramvalue/publicstaticvoidput(StringtableName,StringrowKey,StringcolFamily,Stringcol,Stringvalue){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);//InstantiatingHTableclasstry{Tabletable=conn.getTable(TableName.valueOf(tableName));Putput=newPut(Bytes.toBytes(rowKey));put.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col),Bytes.toBytes(value));table.put(put);/批量插入ListputList=newArrayList();puts.add(put);table.put(putList);///closingHTabletable.close();}catch(IOExceptione){e.printStackTrace();}finally{close(conn,admin);}}/批量写入@paramtableName@paramputList@return/publicstaticbooleanput(StringtableName,ListputList){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);try{Tabletable=conn.getTable(TableName.valueOf(tableName));table.put(putList);}catch(IOExceptione){e.printStackTrace();}finally{close(conn,admin);}returntrue;}/根据RowKey获取数据@paramtableName表名称@paramrowKeyRowKey名称@paramcolFamily列族名称@paramcol列名称@throwsIOException/publicstaticvoidget(StringtableName,StringrowKey,StringcolFamily,Stringcol){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);try{Tabletable=conn.getTable(TableName.valueOf(tableName));Getget=newGet(Bytes.toBytes(rowKey));if(colFamily!=null){get.addFamily(Bytes.toBytes(colFamily));}if(colFamily!=null}Resultresult=table.get(get);showCell(result);table.close();}catch(IOExceptione){e.printStackTrace();}finally{close(conn,admin);}}/获取数据@paramtableName@paramrowKey@paramcolFamily/publicstaticvoidget(StringtableName,StringrowKey,StringcolFamily){get(tableName,rowKey,colFamily,null);}/获取数据@paramtableName@paramrowKey/publicstaticvoidget(StringtableName,StringrowKey){get(tableName,rowKey,null);}/批量获取@paramtableName@paramrows/publicstaticvoidget(StringtableName,String[]rows){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);Result[]results=null;try{Tabletable=conn.getTable(TableName.valueOf(tableName));Listgets=newArrayList();for(Stringrow:rows){if(row!=null){gets.add(newGet(Bytes.toBytes(String.valueOf(row))));}else{thrownewRuntimeException("hbasehavenodata");}}if(gets.size()>0){results=table.get(gets);}for(Resultresult:results){showCell(result);}table.close();}catch(IOExceptione){e.printStackTrace();}finally{close(conn,admin);}}/scan数据@paramtableName@paramcolFamily@paramcols/publicstaticvoidscan(StringtableName,StringcolFamily,String[]cols){Configurationconf=getConfiguration();Connectionconn=getConnection(conf);Adminadmin=getAdmin(conn);try{//InstantiatingHTableclassTabletable=conn.getTable(TableName.valueOf(tableName));Scanscan=newScan();//Scanningtherequiredcolumnsif(colFamily!=null){scan.addFamily(Bytes.toBytes(colFamily));}if(colFamily!=null}}//GettingthescanresultResultScannerscanner=table.getScanner(scan);//Readingvaluesfromscanresultfor(Resultresult=scanner.next();result!=null;result=scanner.next())showCell(result);//System.out.println("Foundrow:"+result);//closingthescannerscanner.close();}catch(IOExceptione){e.printStackTrace();}finally{close(conn,admin);}}/scan@paramtableName@paramcolFamily/publicstaticvoidscan(StringtableName,StringcolFamily){scan(tableName,colFamily,null);}/scan@paramtableName/publicstaticvoidscan(StringtableName){scan(tableName,null);}/格式化输出@paramresult/publicstaticvoidshowCell(Resultresult){Cell[]cells=result.rawCells();for(Cellcell:cells){System.out.println(newString(CellUtil.cloneRow(cell))+""+cell.getTimestamp()+""+newString(CellUtil.cloneFamily(cell))+""+newString(CellUtil.cloneQualifier(cell))+""+newString(CellUtil.cloneValue(cell)));}}publicstaticvoidmain(Stringargs[]){//创建表Stringcf[]={"cf"};createTable("test5",cf);//列出所有表listTables();//添加数据put("test5","101","cf","name","zhang3");put("test5","101","cf","age","18");put("test5","102","cf","name","li4");put("test5","102","cf","age","20");//获取数据get("test5","101","cf","name");get("test5","101","cf","age");//System.out.println("-------------------------");//删除数据//delete("test5","101","cf","name");//get("test5","101","cf","name");//System.out.println("-------------------------");//get("test5","101","cf","age");//System.out.println("-------------------------");//扫描name列//String[]cols={"name"};//scan("test5","cf",cols);//System.out.println("-------------------------");//扫描name和age列//String[]cols1={"name","age"};//scan("test5","cf",cols1);//System.out.println("-------------------------");//扫描cf列族//scan("test5","cf");System.out.println("-------------------------");//扫描全表scan("test5");}}