• 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
  • 相关阅读:
    [ css 计数器 counter ] css中counter计数器实例演示三
    [ css 计数器 counter ] css中counter计数器实例演示二
    Leetcode 15. 三数之和
    Leetcode 13. 罗马数字转整数
    Leetcode 19. 删除链表的倒数第 N 个结点
    Leetcode 12. 整数转罗马数字
    Leetcode 11. 盛最多水的容器 双指针
    剑指 Offer 68
    剑指 Offer 68
    面试题 04.02. 最小高度树
  • 原文地址:https://www.cnblogs.com/liuchangchun/p/4121874.html
Copyright © 2020-2023  润新知