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
  • 相关阅读:
    删除ubuntu中多余的主题和背景文件
    android 开发之动画Activity
    android开发之自定义组件
    android 开发之Activity切换
    程序设计课件
    初识Proximal Policy Optimization (PPO)
    初识Auction Theory
    什么是Experience Replay和Seperate Target Networks
    初识ActorCritic
    初识Stackelberg Game
  • 原文地址:https://www.cnblogs.com/liuchangchun/p/4121874.html
Copyright © 2011-2022 走看看