2019独角兽企业重金招聘Python工程师标准>>>

最近用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<byte[], NavigableMap<byte[], byte[]>> nm = rs.getNoVersionMap();for(byte[] family : nm.keySet()){System.out.println(new String(family));NavigableMap<byte[], byte[]> 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

hbase developer API 1.22版相关推荐

  1. hbase rest api接口链接管理【golang语言版】

    # go-hbase-rest hbase rest api接口链接管理[golang语言版] 关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/b ...

  2. HBase JAVA API(大章鱼版)

    阅读前请注意: 此api中的环境为大章鱼大数据学习平台提供,非此环境,jar包,与程序代码存在一定问题.如果想本地虚拟机运行请参考分布式数据应用,进行操作 任务目标 1.了解HBase语言的基本语法 ...

  3. 资料分享:送你一本《BigONE Developer API V2》电子书!

    背景 昨天,我推送了一篇技术图文<如何利用 BigOne 的 API 制作自动化交易系统 – 身份验证>,里面提到了 BigONE Developer API V2.为了方便自己也方便他人 ...

  4. HBase编程 API入门系列之HTable pool(6)

    HTable是一个比较重的对此,比如加载配置文件,连接ZK,查询meta表等等,高并发的时候影响系统的性能,因此引入了"池"的概念. 引入"HBase里的连接池" ...

  5. hbase java api样例(版本1.3.1,新API)

    hbase版本:1.3.1 目的:HBase新API的使用方法. 尝试并验证了如下几种java api的使用方法. 1.创建表 2.创建表(预分区) 3.单条插入 4.批量插入 5.批量插入(客户端缓 ...

  6. UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)...

    UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订) 基本信息 原书名: Unix Network Programming, Vol ...

  7. HBase–常用API操作篇

    2019独角兽企业重金招聘Python工程师标准>>> [常用到的几个类] 1. org.apache.hadoop.hbase.HBaseConfiguration 每一个hbas ...

  8. hbase java api 两种方式

    NoSQL Hbase JAVA API 实例一 导入架包: <dependency><groupId>org.apache.hbase</groupId>< ...

  9. 无声息格式化磁盘的API,VB版

    无声息格式化磁盘的API,VB版,使用方法: doFormat("E:") 曾经用这API做了个小恶软,专格式化U盘,代码在这里就不予公开了~~~ Public Declare F ...

最新文章

  1. 一步快速将Smartform output转成生成PDF文件
  2. DevOps的几个场景
  3. 三种流行防火墙配置方案分析与对比
  4. 腾讯数平精准推荐 | 横扫ICDAR 2019,斩获七项冠军
  5. 进行Java Web项目开发需要掌握的技术
  6. 单调栈解决维持相对位置不变最小/最大字典序问题
  7. 2019款新iPhone发布时间曝光:依旧9月12日亮相?
  8. SciPy 积分的计算
  9. 在线考试新入.html,JSP+SSM+MySql实现的在线考试系统毕设指导思路模板
  10. 基于matlab的谱估计,基于MATLAB的功率谱估计实验.doc
  11. 【MySQL基础篇】MySQL数据库安装教程
  12. Map的实现类中,哪些是有序的,哪些是无序的
  13. 光纤中传导模式matlab仿真,光纤通信实验指导书
  14. 中兴服务器isac配置,中兴AC 配置手册V1.0.docx
  15. mysql 中 一个汉字吗_MySQL 中一个汉字占多少存储?
  16. 可转债打新,怎么预估上市价格
  17. matlab如何画双x坐标,matlab画双坐标图
  18. PyTorch中的squeeze()和unsqueeze()详解与应用案例
  19. OCR识别技术之—移动端证件识别
  20. 您说什么它都能理解?对话式搜索了解一下

热门文章

  1. C++中explicit关键字的作用
  2. Hibernate二级缓存与查询缓存的组合探究
  3. VMware View 与Citrix XenDesktop对决之用户体验篇
  4. RESTful API 设计指南(转)
  5. 【Python之旅】第五篇(三):Python Socket多线程并发
  6. 操作系统原理之磁盘调度
  7. OSSIM下部署HIDS
  8. Hibernate事务处理
  9. Java:取得当前日期一周之前/之后的日期,或者是一月之前/之后的日期
  10. 【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链 (转)