HBase总结(十四)LINUX下用Eclipse构建HBase开发环境

来源:互联网 发布:封面制作软件下载 编辑:程序博客网 时间:2024/06/08 12:51
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章的代码复制进去,做适当的修改,代码如下:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package chapter12;  
  2.   
  3. import java.io.IOException;  
  4.    
  5. import org.apache.hadoop.conf.Configuration;  
  6. import org.apache.hadoop.hbase.HBaseConfiguration;  
  7. import org.apache.hadoop.hbase.HColumnDescriptor;  
  8. import org.apache.hadoop.hbase.HTableDescriptor;  
  9. import org.apache.hadoop.hbase.client.Get;  
  10. import org.apache.hadoop.hbase.client.HBaseAdmin;  
  11. import org.apache.hadoop.hbase.client.HTable;  
  12. import org.apache.hadoop.hbase.client.Put;  
  13. import org.apache.hadoop.hbase.client.Result;  
  14. import org.apache.hadoop.hbase.client.ResultScanner;  
  15. import org.apache.hadoop.hbase.client.Scan;  
  16. import org.apache.hadoop.hbase.util.Bytes;  
  17.   
  18.   
  19. public class HBaseTestCase {             
  20.     //声明静态配置 HBaseConfiguration  
  21.     static Configuration cfg=HBaseConfiguration.create();  
  22.   
  23.     //创建一张表,通过HBaseAdmin HTableDescriptor来创建  
  24.     public static void creat(String tablename,String columnFamily) throws Exception {  
  25.         HBaseAdmin admin = new HBaseAdmin(cfg);  
  26.         if (admin.tableExists(tablename)) {  
  27.             System.out.println("table Exists!");  
  28.             System.exit(0);  
  29.         }  
  30.         else{  
  31.             HTableDescriptor tableDesc = new HTableDescriptor(tablename);  
  32.             tableDesc.addFamily(new HColumnDescriptor(columnFamily));  
  33.             admin.createTable(tableDesc);  
  34.             System.out.println("create table success!");  
  35.         }  
  36.     }  
  37.     
  38.     //添加一条数据,通过HTable Put为已经存在的表来添加数据  
  39.     public static void put(String tablename,String row, String columnFamily,String column,String data) throws Exception {  
  40.         HTable table = new HTable(cfg, tablename);  
  41.         Put p1=new Put(Bytes.toBytes(row));  
  42.         p1.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(data));  
  43.         table.put(p1);  
  44.         System.out.println("put '"+row+"','"+columnFamily+":"+column+"','"+data+"'");  
  45.     }  
  46.      
  47.    public static void get(String tablename,String row) throws IOException{  
  48.             HTable table=new HTable(cfg,tablename);  
  49.             Get g=new Get(Bytes.toBytes(row));  
  50.                 Result result=table.get(g);  
  51.                 System.out.println("Get: "+result);  
  52.     }  
  53.     //显示所有数据,通过HTable Scan来获取已有表的信息  
  54.     public static void scan(String tablename) throws Exception{  
  55.          HTable table = new HTable(cfg, tablename);  
  56.          Scan s = new Scan();  
  57.          ResultScanner rs = table.getScanner(s);  
  58.          for(Result r:rs){  
  59.              System.out.println("Scan: "+r);  
  60.          }  
  61.     }  
  62.       
  63.     public static boolean delete(String tablename) throws IOException{  
  64.               
  65.             HBaseAdmin admin=new HBaseAdmin(cfg);  
  66.             if(admin.tableExists(tablename)){  
  67.                     try  
  68.                     {  
  69.                             admin.disableTable(tablename);  
  70.                             admin.deleteTable(tablename);  
  71.                     }catch(Exception ex){  
  72.                             ex.printStackTrace();  
  73.                             return false;  
  74.                     }  
  75.                       
  76.             }  
  77.             return true;  
  78.     }  
  79.     
  80.     public static void  main (String [] agrs) {  
  81.             String tablename="hbase_tb";  
  82.         String columnFamily="cf";  
  83.             
  84.             try {                       
  85.             HBaseTestCase.creat(tablename, columnFamily);  
  86.             HBaseTestCase.put(tablename, "row1", columnFamily, "cl1", "data");  
  87.             HBaseTestCase.get(tablename, "row1");  
  88.             HBaseTestCase.scan(tablename);  
  89.  /*           if(true==HBaseTestCase.delete(tablename))  
  90.                     System.out.println("Delete table:"+tablename+"success!");  
  91.  */             
  92.         }  
  93.         catch (Exception e) {  
  94.             e.printStackTrace();  
  95.         }      
  96. }  
  97. }  

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


 




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




期间自己遇到点问题:

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

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


0 0
原创粉丝点击