首页 > 代码库 > hbase java sample

hbase java sample

  1. 通过HBaseAdmin维护表(创建,删除表)

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
public class CreateHbaseTable {
    public static void main(String[] args) throws Exception {
       String tbl = "ericni_test";
        Configuration config = HBaseConfiguration. create();
        config.set( "hbase.zookeeper.quorum", "xxxx" );
        config.set( "hbase.zookeeper.property.clientPort" , "2181" );
        HBaseAdmin admin = new HBaseAdmin(config);
        HTableDescriptor[] tables = admin.listTables();
        for(HTableDescriptor t:tables){
            System. out.println(t.getNameAsString());
        }
        if (admin.tableExists(tbl.getBytes("utf8" ))) {
           System. out.println("table already exists!" );
        } else {
            System. out.println("table not already exists!create now!" );
            creatTable(admin,tbl,new String[]{ "info"});
       }
    }
    public static void creatTable(HBaseAdmin admin,String tableName, String[] familys) throws Exception {
            HTableDescriptor tableDesc = new HTableDescriptor(tableName);
            for(int i=0; i<familys.length; i++){
                tableDesc.addFamily( new HColumnDescriptor(familys[i]));
            }
            try{
               admin.createTable(tableDesc);
               System. out.println("create table " + tableName + " ok.");
            } catch (Exception err) {
              System. out.println("create table " + tableName + " failed. Error log is " +  err);
              err.printStackTrace();                                        
            }
    }
   
    public static void deleteTable(HBaseAdmin admin,String tableName) throws Exception {
       try{
                     admin.disableTable(tableName);
                     admin.deleteTable(tableName);
                     System. out.println("delete table " + tableName + " ok.");
       } catch(Exception err){
                     System. out.println("delete table " + tableName + " failed.Error log is " + err);
                     err.printStackTrace();
       }
    }
   
}

2.通过Put写入数据

import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
public class LoadDataFromFile {
    public static void main(String[] args) throws Exception {
       String tbl = "ericni_test";
       String filename = "/tmp/click.log";
       File file = new File(filename);  
       BufferedReader reader = null;
        reader = new BufferedReader(new FileReader(file));
        Configuration config = HBaseConfiguration. create();
        config.set( "hbase.zookeeper.quorum", "10.100.90.203" );
        config.set( "hbase.zookeeper.property.clientPort" , "2181" );
        HTable table = new HTable(config, tbl);
        HBaseAdmin admin = new HBaseAdmin(config);
        if (admin.tableExists(tbl.getBytes("utf8" ))) {
           System. out.println("table already exists!" );
           try {
               try {
                   String tmpString = null;
                   int linex = 1;
                   while ((tmpString = reader.readLine()) != null) {
                           //System.out.println(tmpString.getClass());
                           String[] lines = tmpString.split( "\\t");
                           //String[] newlines = {lines[0],lines[1],lines[2],lines[3],lines[4]};  
                           //String row = StringUtils.join(new String[] {lines[0],lines[1],lines[2],lines[3],lines[4]}, "_");
                           StringBuffer sb = new StringBuffer();
                           String row = sb.append(lines[0]).append("_" ).append(lines[1]).append("_").append(lines[2]).append( "_").append(lines[3]).append("_" ).append(lines[4]).toString();
                           String valuex = lines[lines. length-1];                      
                           System. out.println(row);
                           linex ++;
                              addRecord(table,tbl,row, "Stat", "Click_cnt", valuex);
                   }
                   reader.close();
           } catch(IOException err){
                   err.printStackTrace();
           } finally {
                   try{
                           if(reader != null) reader.close();
                   } catch(IOException err){
                           err.printStackTrace();
                   }
           }
              
           } catch(Exception err){
                 System. out.println("load data error" );
                 System. out.println("error log: " + err);
                 err.printStackTrace();
           }        
          
        } else {
            System. out.println("table not already exists!" );
            System. exit(1);
       }
        table.close();
        admin.close();
    }
     public static void addRecord(HTable table,String tableName, String rowKey, String family, String qualifier, String value) throws Exception{
            Put put = new Put(Bytes.toBytes(rowKey));
            put.add(Bytes. toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
            table.put(put);
            System. out.println("insert recored " + rowKey + " to table " + tableName + " ok." );
        }
   
}

3.Scan的Filter操作

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;      
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.util.Bytes;
public class FilterTest {
    private static Configuration config = null;
    private static HTable table;
    private static HTable table2;
    private static HTable table3;
    static {
        try {
            config = HBaseConfiguration.create();
            config.set("hbase.zookeeper.quorum" , "xxxxx" );    
            config.set("hbase.zookeeper.property.clientPort" , "2181" );
        } catch (Exception e){
            e.printStackTrace();
        }
    }
    public static void selectByRowKey(String tablename,String rowKey) throws IOException{
        table = new HTable(config,tablename);
        Get g = new Get(Bytes.toBytes(rowKey));
        Result r = table.get(g);
        for(KeyValue kv:r.raw()){
            System. out.println("row : " +new String(kv.getRow()));
            System. out.println("column: " +new String(kv.getKey()));
            System. out.println("value: " +new String(kv.getValue()));
        }
    }   
    public static void selectByRowKeyColumn(String tablename,String rowKey,String column,String qualifier) throws IOException{
        table2 = new HTable(config,tablename);
        Get g = new Get(Bytes.toBytes(rowKey));
        g.addColumn(Bytes. toBytes(column),qualifier.getBytes("utf8"));
        Result r = table2.get(g);
        for(KeyValue kv:r.raw()){
            System. out.println("row : " +new String(kv.getRow()));
            System. out.println("column: " +new String(kv.getKey()));
            System. out.println("value: " +new String(kv.getValue()));
        }
    } 
    public static void selectByFilter(String tablename,List<String> arr) throws IOException{
        table3 = new HTable(config,tablename);
        FilterList filterList = new FilterList();
        Scan s1 = new Scan();
        for(String v:arr){
            String[] s = v.split( ",");
            filterList.addFilter( new SingleColumnValueFilter(Bytes.toBytes(s[0]),
                                                             Bytes.toBytes(s[1]),
                                                             CompareOp.EQUAL,Bytes.toBytes(s[2])
                                                             )
            );
            s1.addColumn(Bytes. toBytes(s[0]), Bytes.toBytes(s[1]));
        }
        s1.setFilter(filterList);
        ResultScanner ResultScannerFilterList = table3.getScanner(s1);
        for(Result rr = ResultScannerFilterList.next();rr != null;rr = ResultScannerFilterList.next()){
            for(KeyValue kv:rr.list()){
                System. out.println("row : " +new String(kv.getRow()));
                System. out.println("column : " +new String(kv.getKey()));
                System. out.println("value : " +new String(kv.getValue()));
            }
        }
    }    
    public static void main(String[] args) throws IOException{          
       //selectByRowKey("ericni_test","102_2.94_1400342400_00426_01132");              
           //selectByRowKeyColumn("ericni_test","102_2.94_1400342400_00426_01132"," Stat","Click_cnt");             
        List<String> arr= new ArrayList<String>();
        arr.add( "Stat,Click_cnt,1");
        selectByFilter("ericni_test" ,arr);
    }    
}


本文出自 “菜光光的博客” 博客,请务必保留此出处http://caiguangguang.blog.51cto.com/1652935/1436095