Hbase API

xiaoxiao2021-02-28  72

JUnit 4 开始使用 Java 5 中的注解,常用的几个 注解为: @BeforeClass:针对所有测试,只执行一次,且必须为static void @Before:初始化方法 @Test:测试方法,在这里可以测试期望异常和超时时间 @After:释放资源 @AfterClass:针对所有测试,只执行一次,且必须为static void @Ignore:忽略的测试方法

我们的Hbase API只是在执行每个方法,所以我们只用上面的三种方法(@Before@Test@After)就足够了。

下面是代码实现

package test.api; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; 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.Row; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.util.Bytes; import org.junit.After; import org.junit.Before; import org.junit.Test; public class api { Connection conn; @Before public void init() { //配置参数信息 Configuration conf = new Configuration(); conf.set("hbase.zookeeper.quorum", "oracle"); conf.set("hbase.rootdir", "hdfs://oracle:9000/hbase"); //建立链接,这里需要注意的是我已经在电脑中的host文件添加了集群的主机名对应的IP //若没有添加,"oralce"的位置还是应该写成IP地址 try { conn = ConnectionFactory.createConnection(conf); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @After public void close() { try { conn.close();//关闭链接 } catch (IOException e) { e.printStackTrace(); } } @Test public void testPut() { try { Table table = conn.getTable(TableName.valueOf("school")); Put member = new Put(Bytes.toBytes("Jerry")); member.addColumn(Bytes.toBytes("students"), Bytes.toBytes("sex"), Bytes.toBytes("F")); table.put(member); table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testPutList() { try { Table table = conn.getTable(TableName.valueOf("school")); List<Put> members = new ArrayList<Put>(); Put Sage = new Put(Bytes.toBytes("Jerry")); Sage.addColumn(Bytes.toBytes("students"), Bytes.toBytes("age"), Bytes.toBytes("14")); Put Tsex = new Put(Bytes.toBytes("Mery")); Tsex.addColumn(Bytes.toBytes("teachers"), Bytes.toBytes("sex"), Bytes.toBytes("F")); Put Tage = new Put(Bytes.toBytes("Mery")); Tage.addColumn(Bytes.toBytes("teachers"), Bytes.toBytes("age"), Bytes.toBytes("30")); members.add(Sage); members.add(Tsex); members.add(Tage); table.put(members); table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //怎么感觉这段有点问题啊,因为timestamp的存在,好像每次都能加上 @Test public void testCheckAndPut(){ try { Table table = conn.getTable(TableName.valueOf("school")); Put member = new Put(Bytes.toBytes("Mery")); member.addColumn(Bytes.toBytes("teachers"), Bytes.toBytes("sex"), Bytes.toBytes("F")); boolean result = table.checkAndPut(Bytes.toBytes("Mery"),Bytes.toBytes("teachers"), Bytes.toBytes("sex"), Bytes.toBytes("F"), member); table.close(); System.out.println(result); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testDelete(){ try { Table table = conn.getTable(TableName.valueOf("school")); Delete member = new Delete(Bytes.toBytes("Jerry")); //member.deleteColumn(Bytes.toBytes("students"), Bytes.toBytes("age")); table.delete(member); table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testDeleteList(){ try { Table table = conn.getTable(TableName.valueOf("table")); Delete member1 = new Delete(Bytes.toBytes("Jerry")); member1.addColumn(Bytes.toBytes("students"), Bytes.toBytes("sex")); Delete member2 = new Delete(Bytes.toBytes("Merry")); member2.addColumn(Bytes.toBytes("teacher"), Bytes.toBytes("age")); List<Delete> members = new ArrayList<Delete>(); members.add(member1); members.add(member2); table.delete(members); table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testCheckAndDelete(){ try { Table table = conn.getTable(TableName.valueOf("school")); Delete member = new Delete(Bytes.toBytes("Mery")); member.addColumn(Bytes.toBytes("teachers"), Bytes.toBytes("age")); boolean result = table.checkAndDelete(Bytes.toBytes("Mery"), Bytes.toBytes("teachers"), Bytes.toBytes("age"), Bytes.toBytes("30"), member); System.out.println(result); table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testGet(){ try { Table table = conn.getTable(TableName.valueOf("school")); Get get = new Get(Bytes.toBytes("Jerry")); get.addFamily(Bytes.toBytes("students")); Result result = table.get(get); List<Cell> cells = result.listCells(); for (Cell cell : cells) { String qualifier = Bytes.toString(CellUtil.cloneQualifier(cell)); //System.out.println(qualifier); /*if(qualifier.equals("age")){ int value =Bytes.toInt(CellUtil.cloneValue(cell)); System.out.println("qualifier:"+qualifier+"\t"+"value:"+value); }else{*/ String string =Bytes.toString(CellUtil.cloneValue(cell)); System.out.println("qualifier:"+qualifier+"\t"+"value:"+string); /*}*/ } table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testGetList(){ try { Table table = conn.getTable(TableName.valueOf("school")); Get get1 = new Get(Bytes.toBytes("Jerry")); get1.addFamily(Bytes.toBytes("students")); Get get2 = new Get(Bytes.toBytes("Mery")); get2.addFamily(Bytes.toBytes("teachers")); List<Get> gets = new ArrayList<Get>(); gets.add(get1); gets.add(get2); Result[] result = table.get(gets); for (Result result2 : result) { List<Cell> cells = result2.listCells(); for (Cell cell : cells) { String qualifier = Bytes.toString(CellUtil.cloneQualifier(cell)); //System.out.println(qualifier); /*if(qualifier.equals("age")){ int value =Bytes.toInt(CellUtil.cloneValue(cell)); System.out.println("qualifier:"+qualifier+"\t"+"value:"+value); }else{*/ String string =Bytes.toString(CellUtil.cloneValue(cell)); System.out.println("qualifier:"+qualifier+"\t"+"value:"+string); /*}*/ } } table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testBatch(){ try { Table table = conn.getTable(TableName.valueOf("school")); List<Row> actions = new ArrayList<Row>(); actions.add(new Put(Bytes.toBytes("Jerry")).addColumn(Bytes.toBytes("students"), Bytes.toBytes("sex"), Bytes.toBytes("F"))); actions.add(new Delete(Bytes.toBytes("Jerry")).addColumn(Bytes.toBytes("students"), Bytes.toBytes("sex"))); Object[] results = new Object[actions.size()]; table.batch(actions, results); for (int i = 0; i < results.length; i++) { System.out.println("Result[" + i + "]: type = " + results[i].getClass().getSimpleName() + "; " + results[i]); } table.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testScan() {//扫描 try { Table table = conn.getTable(TableName.valueOf("shool")); //没有指定起始行,则从表的起始位置开始获取 ResultScanner resultScanner = table.getScanner(Bytes.toBytes("Mery")); Iterator<Result> iter = resultScanner.iterator(); while(iter.hasNext()) { Result result = iter.next(); System.out.println(new String(result.value()));; } resultScanner.close(); table.close(); } catch (Exception e) { e.printStackTrace(); } } }
转载请注明原文地址: https://www.6miu.com/read-68401.html

最新回复(0)