博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hbase developer API 1.22版
阅读量:6867 次
发布时间:2019-06-26

本文共 7306 字,大约阅读时间需要 24 分钟。

hot3.png

最近用hbase1.22搭了套集群环境,发现之前的测试代码虽然还都能用,但是好多的老的方法,已经是不建议使用了。新的代码在下面给贴出来,我把相对于老版本api,有改动的部分用红色字体标注了出来。

package com.woozoom.hbase.test;import java.io.IOException;import java.util.*;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.*;import org.apache.hadoop.hbase.client.*;import org.apache.hadoop.hbase.util.Bytes;public class BaseOperation {    private static final String TABLE_NAME = "demo_table";    public static Configuration conf = null;    public HTable table = null;    public HBaseAdmin admin = null;    static {        conf = HBaseConfiguration.create();    }    /**     * 创建一张表     */    public static void creatTable(String strTN, String[] familys)            throws Exception {        Connection conn = ConnectionFactory.createConnection(conf);        Admin admin = conn.getAdmin();        TableName tn = TableName.valueOf(strTN);        if (admin.tableExists(tn)) {            System.out.println("table already exists!");        } else {            HTableDescriptor tableDesc = new HTableDescriptor(tn);            for (String colFamily : familys) {                tableDesc.addFamily(new HColumnDescriptor(colFamily));            }            admin.createTable(tableDesc);            System.out.println("create table " + strTN + " ok.");        }    }    /**     * 删除表     */    public static void deleteTable(String strTN) throws Exception {        try {            Connection conn = ConnectionFactory.createConnection(conf);            Admin admin = conn.getAdmin();            TableName tn = TableName.valueOf(strTN);            admin.disableTable(tn);            admin.deleteTable(tn);            System.out.println("delete table " + strTN + " ok.");        } catch (MasterNotRunningException e) {            e.printStackTrace();        } catch (ZooKeeperConnectionException e) {            e.printStackTrace();        }    }    /**     * 插入一行记录     */    public static void addRecord(String strTN, String rowKey,                                 String family, String qualifier, String value) throws Exception {        try {            Connection conn = ConnectionFactory.createConnection(conf);            TableName tn = TableName.valueOf(strTN);            Table table = conn.getTable(tn);            Put put = new Put(Bytes.toBytes(rowKey));            put.addColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier),                    Bytes.toBytes(value));            table.put(put);            System.out.println("insert recored " + rowKey + " to table "                    + strTN + " ok.");        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * 删除一行记录     */    public static void delRecord(String strTN, String rowKey)            throws IOException {        Connection conn = ConnectionFactory.createConnection(conf);        TableName tn = TableName.valueOf(strTN);        Table table = conn.getTable(tn);        List list = new ArrayList();        Delete del = new Delete(rowKey.getBytes());        list.add(del);        table.delete(list);        System.out.println("del recored " + rowKey + " ok.");    }    /**     * 查找一行记录     */    public static void getOneRecord(String strTN, String rowKey)            throws IOException {        Connection conn = ConnectionFactory.createConnection(conf);        TableName tn = TableName.valueOf(strTN);        Table table = conn.getTable(tn);        Get get = new Get(rowKey.getBytes());        Result rs = table.get(get);        for (Cell cell : rs.listCells()) {            KeyValue kv = (KeyValue)cell;            System.out.println("### " + new String(kv.getKey()) + " ###");            System.out.println("### " + new String(Arrays.copyOfRange(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyOffset() + cell.getFamilyLength())) + " ###");            System.out.println("### " + new String(Arrays.copyOfRange(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierOffset() + cell.getQualifierLength())) + " ###");            System.out.println("### " + new String(Arrays.copyOfRange(cell.getValueArray(), cell.getValueOffset(), cell.getValueOffset() + cell.getValueLength())) + " ###");            System.out.println("### " + cell.getTimestamp() + " ###");        }        NavigableMap
> nm = rs.getNoVersionMap(); for(byte[] family : nm.keySet()){ System.out.println(new String(family)); NavigableMap
nmSon = nm.get(family); for (byte[] qualifier : nmSon.keySet()){ System.out.println(new String(qualifier)); byte[] value = nmSon.get(qualifier); System.out.println(new String(value)); } } } /** * 显示所有数据 */ public static void getAllRecord(String strTN) { try { Connection conn = ConnectionFactory.createConnection(conf); TableName tn = TableName.valueOf(strTN); Table table = conn.getTable(tn); Scan s = new Scan(); ResultScanner ss = table.getScanner(s); for (Result r : ss) { for (Cell cell : r.listCells()) { KeyValue kv = (KeyValue)cell; System.out.print(new String(kv.getKey()) + " "); System.out.print(new String(Arrays.copyOfRange(kv.getFamilyArray(), kv.getFamilyOffset(), kv.getFamilyOffset() + kv.getFamilyLength())) + ":"); System.out.print(new String(Arrays.copyOfRange(kv.getQualifierArray(), kv.getQualifierOffset(), kv.getQualifierOffset() + kv.getQualifierLength())) + " "); System.out.print(kv.getTimestamp() + " "); System.out.println(new String(Arrays.copyOfRange(kv.getValueArray(), kv.getValueOffset(), kv.getValueOffset() + kv.getValueLength()))); } } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] agrs) { try { String tablename = "scores1"; String[] familys = {
"grade", "course"}; BaseOperation.creatTable(tablename, familys); // add record zkb BaseOperation.addRecord(tablename, "zkb", "grade", "", "5"); BaseOperation.addRecord(tablename, "zkb", "course", "", "90"); BaseOperation.addRecord(tablename, "zkb", "course", "math", "97"); BaseOperation.addRecord(tablename, "zkb", "course", "art", "87"); // add record baoniu BaseOperation.addRecord(tablename, "baoniu", "grade", "", "4"); BaseOperation .addRecord(tablename, "baoniu", "course", "math", "89"); System.out.println("===========get one record========"); BaseOperation.getOneRecord(tablename, "zkb"); System.out.println("===========show all record========"); BaseOperation.getAllRecord(tablename); System.out.println("===========del one record========"); BaseOperation.delRecord(tablename, "baoniu"); BaseOperation.getAllRecord(tablename); System.out.println("===========show all record========"); BaseOperation.getAllRecord(tablename); } catch (Exception e) { e.printStackTrace(); } }}

转载于:https://my.oschina.net/dongtianxi/blog/726901

你可能感兴趣的文章
Instana:将微服务监控带入到服务级别
查看>>
没有对比就没有伤害,优秀的代码VS糟糕的代码
查看>>
开源日志系统log4cplus(三)
查看>>
.NET Core下的日志(2):日志模型详解
查看>>
赋予机器手一层可感受温度的皮肤
查看>>
通过Docker来部署Mesos集群
查看>>
处理硬件故障的5款免费应用
查看>>
Sitecore Sitecore 8将营销工作化繁为简
查看>>
泰一指尚携手吉利汽车、丝蕴syoss荣获中国广告主金远奖
查看>>
业务需求不息 数据生命不止
查看>>
MWC新看点:5G网络从标准化向商业化迈进
查看>>
java命名规范
查看>>
《中国人工智能学会通讯》——2.20 专用的深度学习处理器
查看>>
管理员权限的凭证安全漏洞
查看>>
Forrester:云计算受大型企业欢迎
查看>>
“以病患为中心”的智能医疗服务开启数字化医疗新体验
查看>>
西门子楼宇自动系统出现中间人攻击漏洞CVE-2016-9154 本已发布通告可又悄悄撤除...
查看>>
存储技术专家预测2017年云存储采用率飙升
查看>>
《VMware Virtual SAN权威指南》一3.10 磁盘组的角色
查看>>
网易2018校招内推编程题 交错01串
查看>>