• HBase学习(十四)LINUX下用Eclipse构建HBase开发环境


    Eclipse,HBase版本号眼下没有发现须要特别指定


    1:从HBase集群中复制一份Hbase部署文件,放置在开发端某一文件夹下(如在/app/hadoop/hbase096文件夹下)。

    2:在eclipse里新建一个java项目HBase,然后选择项目属性,在Libraries->Add External JARs...,然后选择/app/hadoop/hbase096/lib下相关的JAR包,假设仅仅是測试用的话,就简单一点,将全部的JAR选上。
     




     





    3:在项目HBase下添加一个文件夹conf,将Hbase集群的配置文件hbase-site.xml拷贝到该文件夹,然后选择项目属性在Libraries->Add Class Folder,将刚刚添加的conf文件夹选上。


     




     



      

     




    4:在HBase项目中添加一个chapter12的package,然后添加一个HBaseTestCase的class,然后将陆嘉恒老师的《Hadoop实战第2版》12章的代码复制进去,做适当的改动,代码例如以下:

    package chapter12;
    
    import java.io.IOException;
     
    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.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 HBaseTestCase {           
        //声明静态配置 HBaseConfiguration
        static Configuration cfg=HBaseConfiguration.create();
    
        //创建一张表,通过HBaseAdmin HTableDescriptor来创建
        public static void creat(String tablename,String columnFamily) throws Exception {
            HBaseAdmin admin = new HBaseAdmin(cfg);
            if (admin.tableExists(tablename)) {
                System.out.println("table Exists!");
                System.exit(0);
            }
            else{
                HTableDescriptor tableDesc = new HTableDescriptor(tablename);
                tableDesc.addFamily(new HColumnDescriptor(columnFamily));
                admin.createTable(tableDesc);
                System.out.println("create table success!");
            }
        }
      
        //加入一条数据,通过HTable Put为已经存在的表来加入数据
        public static void put(String tablename,String row, String columnFamily,String column,String data) throws Exception {
            HTable table = new HTable(cfg, tablename);
            Put p1=new Put(Bytes.toBytes(row));
            p1.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(data));
            table.put(p1);
            System.out.println("put '"+row+"','"+columnFamily+":"+column+"','"+data+"'");
        }
       
       public static void get(String tablename,String row) throws IOException{
                HTable table=new HTable(cfg,tablename);
                Get g=new Get(Bytes.toBytes(row));
                    Result result=table.get(g);
                    System.out.println("Get: "+result);
        }
        //显示全部数据,通过HTable Scan来获取已有表的信息
        public static void scan(String tablename) throws Exception{
             HTable table = new HTable(cfg, tablename);
             Scan s = new Scan();
             ResultScanner rs = table.getScanner(s);
             for(Result r:rs){
                 System.out.println("Scan: "+r);
             }
        }
        
        public static boolean delete(String tablename) throws IOException{
                
                HBaseAdmin admin=new HBaseAdmin(cfg);
                if(admin.tableExists(tablename)){
                        try
                        {
                                admin.disableTable(tablename);
                                admin.deleteTable(tablename);
                        }catch(Exception ex){
                                ex.printStackTrace();
                                return false;
                        }
                        
                }
                return true;
        }
      
        public static void  main (String [] agrs) {
                String tablename="hbase_tb";
            String columnFamily="cf";
              
                try {                     
                HBaseTestCase.creat(tablename, columnFamily);
                HBaseTestCase.put(tablename, "row1", columnFamily, "cl1", "data");
                HBaseTestCase.get(tablename, "row1");
                HBaseTestCase.scan(tablename);
     /*           if(true==HBaseTestCase.delete(tablename))
                        System.out.println("Delete table:"+tablename+"success!");
     */           
            }
            catch (Exception e) {
                e.printStackTrace();
            }    
    }
    }

    5:设置执行配置,然后执行。执行前将Hbase集群先启动。


     




    6:检验,使用hbase shell查看hbase,发现已经建立表hbase_tb。




    期间自己遇到点问题:

    1.引入jar包,有两个包没有读取权限,导致项目出现红色感叹号

    2.由于我是虚拟机,每次都要又一次启动hadoop和HBase,所以也不要忘了设置hadoop为非安全模式


  • 相关阅读:
    VS2008环境下的Freeglut 2.6.0配置
    Qt Creator and Clang
    qml 4.8 bug: ListView.view不能访问
    Qt platform mkspecs
    未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序
    SSIS学习之数据挖掘
    SQL循环执行while控制
    SQL Server查询优化50法
    SSAS使用时间智能解决本年累计、同比、环比【转载】
    企业信息门户:EIP系统
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4042794.html
Copyright © 2020-2023  润新知