Ubuntu 14.10 下Eclipse操作HBase

环境介绍

  64位Ubuntu14.10,Hadoop 2.5.0 ,HBase 0.99.0

准备环境

  1 安装Hadoop 2.5.0,可参考http://www.cnblogs.com/liuchangchun/p/4097286.html

  2 安装HBase 0.99.0 ,可参考http://www.cnblogs.com/liuchangchun/p/4096891.html

  3 安装Ecliose

新建Java工程

  1 运行Eclipse,创建一个新的Java工程“MyHBase”,右键项目根目录,选择 “Properties”->“Java Build Path”->“Library”->“Add External JARs”,将HBase解压后根目录下lib子目录下所有jar 包添加到本工程的Classpath下。
  2.  按照步骤1中的操作,将自己所连接的HBase的配置文件hbase-site.xml添加到本工程的Classpath中,如下所示为配置文件的一个示例:

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.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
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.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
        
public class HBaseTest {         
           
    private static Configuration conf =null;   
     /**  
      * 初始化配置  
     */   
     static {   
         conf = HBaseConfiguration.create();   
     }   
         
    /**   
     * 创建一张表   
     */      
    public static void creatTable(String tableName, String[] familys) throws Exception {      
        HBaseAdmin admin = new HBaseAdmin(conf);      
        if (admin.tableExists(tableName)) {      
            System.out.println("table already exists!");      
        } else {      
            HTableDescriptor tableDesc = new HTableDescriptor(tableName);      
            for(int i=0; i<familys.length; i++){      
                tableDesc.addFamily(new HColumnDescriptor(familys[i]));      
            }      
            admin.createTable(tableDesc);      
            System.out.println("create table " + tableName + " ok.");      
        }        
    }      
           
    /**   
     * 删除表   
     */      
    public static void deleteTable(String tableName) throws Exception {      
       try {      
           HBaseAdmin admin = new HBaseAdmin(conf);      
           admin.disableTable(tableName);      
           admin.deleteTable(tableName);      
           System.out.println("delete table " + tableName + " ok.");      
       } catch (MasterNotRunningException e) {      
           e.printStackTrace();      
       } catch (ZooKeeperConnectionException e) {      
           e.printStackTrace();      
       }      
    }      
            
    /**   
     * 插入一行记录   
     */      
    public static void addRecord (String tableName, String rowKey, String family, String qualifier, String value)      
            throws Exception{      
        try {      
            HTable table = new HTable(conf, tableName);      
            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.");      
        } catch (IOException e) {      
            e.printStackTrace();      
        }      
    }      
        
    /**   
     * 删除一行记录   
     */      
    public static void delRecord (String tableName, String rowKey) throws IOException{      
        HTable table = new HTable(conf, tableName);      
        List list = new ArrayList();      
        Delete del = new Delete(rowKey.getBytes());      
        list.add(del);      
        table.delete(list);      
        System.out.println("del recored " + rowKey + " ok.");      
    }      
            
    /**   
     * 查找一行记录   
     */      
    public static void getOneRecord (String tableName, String rowKey) throws IOException{      
        HTable table = new HTable(conf, tableName);      
        Get get = new Get(rowKey.getBytes());      
        Result rs = table.get(get);      
        for(KeyValue kv : rs.raw()){      
            System.out.print(new String(kv.getRow()) + " " );      
            System.out.print(new String(kv.getFamily()) + ":" );      
            System.out.print(new String(kv.getQualifier()) + " " );      
            System.out.print(kv.getTimestamp() + " " );      
            System.out.println(new String(kv.getValue()));      
        }      
    }      
            
    /**   
     * 显示所有数据   
     */      
    public static void getAllRecord (String tableName) {      
        try{      
             HTable table = new HTable(conf, tableName);      
             Scan s = new Scan();      
             ResultScanner ss = table.getScanner(s);      
             for(Result r:ss){      
                 for(KeyValue kv : r.raw()){      
                    System.out.print(new String(kv.getRow()) + " ");      
                    System.out.print(new String(kv.getFamily()) + ":");      
                    System.out.print(new String(kv.getQualifier()) + " ");      
                    System.out.print(kv.getTimestamp() + " ");      
                    System.out.println(new String(kv.getValue()));      
                 }      
             }      
        } catch (IOException e){      
            e.printStackTrace();      
        }      
    }      
           
    public static void  main (String [] agrs) {      
        try {      
            String tablename = "scores";      
            String[] familys = {"grade", "course"};      
            HBaseTest.creatTable(tablename, familys);      
                    
            //add record zkb      
            HBaseTest.addRecord(tablename,"zkb","grade","","5");      
            HBaseTest.addRecord(tablename,"zkb","course","","90");      
            HBaseTest.addRecord(tablename,"zkb","course","math","97");      
            HBaseTest.addRecord(tablename,"zkb","course","art","87");      
            //add record  baoniu      
            HBaseTest.addRecord(tablename,"baoniu","grade","","4");      
            HBaseTest.addRecord(tablename,"baoniu","course","math","89");      
                    
            System.out.println("===========get one record========");      
            HBaseTest.getOneRecord(tablename, "zkb");      
                    
            System.out.println("===========show all record========");      
            HBaseTest.getAllRecord(tablename);      
                    
            System.out.println("===========del one record========");      
            HBaseTest.delRecord(tablename, "baoniu");      
            HBaseTest.getAllRecord(tablename);      
                    
            System.out.println("===========show all record========");      
            HBaseTest.getAllRecord(tablename);      
        } catch (Exception e) {      
            e.printStackTrace();      
        }      
    }      
} 

  3 运行前要启动Hadoop和HBase,没问题的话,会打印出如下

log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
create table scores ok.
insert recored zkb to table scores ok.
insert recored zkb to table scores ok.
insert recored zkb to table scores ok.
insert recored zkb to table scores ok.
insert recored baoniu to table scores ok.
insert recored baoniu to table scores ok.
===========get one record========
zkb course: 1416917870482 90
zkb course:art 1416917872071 87
zkb course:math 1416917871719 97
zkb grade: 1416917869799 5
===========show all record========
baoniu course:math 1416917874500 89
baoniu grade: 1416917874139 4
zkb course: 1416917870482 90
zkb course:art 1416917872071 87
zkb course:math 1416917871719 97
zkb grade: 1416917869799 5
===========del one record========
del recored baoniu ok.
zkb course: 1416917870482 90
zkb course:art 1416917872071 87
zkb course:math 1416917871719 97
zkb grade: 1416917869799 5
===========show all record========
zkb course: 1416917870482 90
zkb course:art 1416917872071 87
zkb course:math 1416917871719 97
zkb grade: 1416917869799 5

 

转载于:https://www.cnblogs.com/liuchangchun/p/4121874.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值