hbase java sample
admin
2023-02-08 11:00:07
0
  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

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 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 arr= new ArrayList();
        arr.add( "Stat,Click_cnt,1");
        selectByFilter("ericni_test" ,arr);
    }    
}


相关内容

热门资讯

重磅消息“官方正版炸金花.有没... 您好:官方正版炸金花这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这...
【第一消息】“传送屋激k.辅助... 您好:传送屋激k这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
【第一资讯】“天天微友炸金花.... 【第一资讯】“天天微友炸金花.有挂吗?”确实真的有挂您好,天天微友炸金花这个游戏其实有挂的,确实是有...
今日重大通报“拱趴大菠萝.开挂... 今日重大通报“拱趴大菠萝.开挂神器?”太坑了原来有挂您好,拱趴大菠萝这个游戏其实有挂的,确实是有挂的...
美国在委内瑞拉附近水域拦截第三... 总台央视记者当地时间12月21日获悉,据不愿公开姓名的知情人士的消息,美方人员当天在委内瑞拉附近国际...
终于了解“新老夫子拼三张.开挂... 终于了解“新老夫子拼三张.开挂器?”详细开挂教程您好,新老夫子拼三张这个游戏其实有挂的,确实是有挂的...
终于明白“酉阳大贰.到底有挂吗... 网上科普关于“酉阳大贰有没有挂”话题很是火热,小编也是针对酉阳大贰作*弊开挂的方法以及开挂对应的知识...
今日重大发现“星禾卡五星.究竟... 有 亲,根据资深记者爆料星禾卡五星是可以开挂的,确实有挂(咨询软件无需打...
南极磷虾油事件后,同仁堂回应五... 12月20日,针对近日备受关注的南极磷虾油产品事件,中国北京同仁堂(集团)有限责任公司(以下简称同仁...
玩家分享攻略“欢乐斗地主掼蛋.... 有 亲,根据资深记者爆料欢乐斗地主掼蛋是可以开挂的,确实有挂(咨询软件无...