zoukankan      html  css  js  c++  java
  • 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为非安全模式


  • 相关阅读:
    从dotNet到VB6之模仿构造OleDbDataAdapter与dataset结合
    编程的偷懒艺术与美感
    给您参考,现在开发数据库项目用.net 2005成熟吗?还是用.net2003比较有保证
    access数据库版权及容量问题
    中天股票数据格式
    受伤与药油的最佳搭配
    关于发布各种股票软件数据格式
    .net 与flash8传递(互传)数组的技巧
    我的C语言合集
    ZOJ 1205 Martian Addition 解题报告
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4042794.html
Copyright © 2011-2022 走看看