zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<
    世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
    图——克鲁斯算法——构建最小生成树(采用邻接矩阵的方式存储)
    [liu yanling]黑盒测试用例设计方法
    [Stephen]Export from Excel to ALM
    [liu yanling]测试小结
    [liu yanling]测试用例作用
    [liu yanling]测试流程
    [liu yanling]软件测试技巧
    [liu yanling]软件测试用例的基本要素包括哪些?
  • 原文地址:https://www.cnblogs.com/liuchangchun/p/4121874.html
Copyright © 2011-2022 走看看