hbase操作表

首页 » HBase » hbase操作表

表操作(创建、添加数据、查询)

package zhazhalong.hbase;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
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.filter.FilterList;
import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class hbasetest {
HBaseAdmin admin;//操作数据库
String TN="longlong";
HTable htable;//操作表
@Before
public void init() throws Exception{
 Configuration conf=new Configuration();
 conf.set("hbase.zookeeper.quorum", "node01,node02,node03");
 admin=new HBaseAdmin(conf);
 htable=new HTable(conf, TN.getBytes());
}
//创建表
@Test
public void createTable() throws Exception {
 if(admin.tableExists(TN)) {
  //先禁用这个表
  admin.disableTable(TN);
  //删除
  admin.deleteTable(TN);
 }
 //表描述
 HTableDescriptor desc=new HTableDescriptor(TableName.valueOf(TN));
 //列族
 HColumnDescriptor cf = new HColumnDescriptor("cf".getBytes());
 //列族加到表描述里
 desc.addFamily(cf);
 admin.createTable(desc);
}
//取数据1
@Test
public void getDB() throws Exception {
 Get get=new Get("123456567".getBytes());
 //只取这些列
 get.addColumn("cf".getBytes(), "name".getBytes());
 get.addColumn("cf".getBytes(), "age".getBytes());
 get.addColumn("cf".getBytes(), "sex".getBytes());
 Result rs=htable.get(get);
 //rs.advance()
 Cell cell=rs.getColumnLatestCell("cf".getBytes(), "name".getBytes());
 System.out.println(new String(CellUtil.cloneValue(cell)));//返回数组
}
//取数据2
@Test
public void scan() throws Exception {
 /*
15085-85
15086-86
15087-87
15088-88
  */
 Scan scan=new Scan();
 scan.setStartRow("183015085".getBytes());
 scan.setStopRow("183015089".getBytes());
 ResultScanner rss=htable.getScanner(scan);
 for (Result rs:rss) {
  System.out.print(new String(CellUtil.cloneValue(rs.getColumnLatestCell("cf".getBytes(), "friph".getBytes()))));
  System.out.println("-"+new String(CellUtil.cloneValue(rs.getColumnLatestCell("cf".getBytes(), "length".getBytes()))));
 }
  
 
}
//15091-82
@Test
public void scan2() throws Exception {
 FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
 PrefixFilter filter1 = new PrefixFilter("183915091".getBytes());
 //过滤器
 SingleColumnValueFilter filter2 = new SingleColumnValueFilter("cf".getBytes(), "type".getBytes(),
   CompareOp.EQUAL, "82".getBytes());
 //添加过滤器
 list.addFilter(filter1);
 list.addFilter(filter2);
 Scan scan = new Scan();
 scan.setFilter(list);
 ResultScanner rss = htable.getScanner(scan);
 for (Result rs:rss) {
  System.out.print(new String(CellUtil.cloneValue(rs.getColumnLatestCell("cf".getBytes(), "friph".getBytes()))));
  System.out.println("-"+new String(CellUtil.cloneValue(rs.getColumnLatestCell("cf".getBytes(), "length".getBytes()))));
 }
  
}
Random r = new Random();
@Test
public void insertdb() throws Exception{
 int ii=0;
 List<Put>puts=new ArrayList<Put>();
 for (int i=0;i<10;i++) {
  String useph="183"+(i+"");
  for (int j=0;j<100;j++) {
   System.out.println(ii++);
   String friph="150"+(i+j+"");
   String length=j+"";
   String rowkey=useph+friph;//唯一标示
   Put put=new Put(rowkey.getBytes());
   //列族	   列名		列的值
   put.add("cf".getBytes(), "friph".getBytes(), friph.getBytes());//覆盖
   put.add("cf".getBytes(), "length".getBytes(), length.getBytes());//覆盖
   puts.add(put);
  }
  }
 //提交
 htable.put(puts);
}
 @After
 public void declose() throws Exception {
  if(admin!=null) {
   admin.close();
  }
 }
}

 

hbase操作表
分享到:
赞(0) 打赏

评论 5

评论前必须登录!

 

  1. #1

    以后多多交流

    小蚯蚓8个月前 (03-27)
  2. #2

    以后多发点哦

    你哥8个月前 (03-28)
  3. #3

    我也是小白以后多多交流

    我也是渣渣8个月前 (03-28)
  4. #4

    以后多发点哦

    笨鸟先飞8个月前 (03-28)
  5. #5

    看了那么多博客,就你的能看懂

    沥青6个月前 (05-26)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00