pom.xml中引用hbase-client

<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>2.2.5</version>
</dependency>

HBaseConn.java获取hbase链接

package com.rumenz;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
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.Table;import java.io.IOException;public class HBaseConn {private static final HBaseConn INSTANCE=new HBaseConn();private static Configuration configuration;private static Connection connection;private HBaseConn(){try{if(configuration==null){configuration=HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "192.168.82.177:2181");}}catch (Exception e){e.printStackTrace();}}private Connection getConnection(){if(connection==null||connection.isClosed()){try{connection=ConnectionFactory.createConnection(configuration);}catch(Exception e){e.printStackTrace();}}return connection;}public static Connection getHbaseConn(){return INSTANCE.getConnection();}public static Table getTable(String table) throws IOException {return INSTANCE.getConnection().getTable(TableName.valueOf(table));}public static void closeConn(){if(connection!=null){try{connection.close();}catch(Exception e){e.printStackTrace();}}}}

HBaseUtil.java数据库增删改查操作

package com.rumenz;import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.util.Bytes;import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class HBaseUtil {/*** 创建一个表* @param tableName 表名* @param cf 列族名* @return* @throws IOException*/public static boolean createTable(String tableName,String[] cf) throws IOException {try(HBaseAdmin admin = (HBaseAdmin) HBaseConn.getHbaseConn().getAdmin()){if(admin.tableExists(TableName.valueOf(tableName))){return false;}List<ColumnFamilyDescriptor> res=new ArrayList<>();Arrays.stream(cf).forEach(cff->{res.add(ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(cff)).build());});TableDescriptor hTableDescriptor= TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName)).setColumnFamilies(res).build();admin.createTable(hTableDescriptor);}catch(Exception e){e.printStackTrace();}return true;}/*** 删除一个表* @param tableName 表名* @return*/public static boolean deleteTable(String tableName){try(HBaseAdmin admin= (HBaseAdmin) HBaseConn.getHbaseConn().getAdmin()){admin.disableTable(TableName.valueOf(tableName));admin.deleteTable(TableName.valueOf(tableName));}catch(Exception e){e.printStackTrace();}return true;}/***  插入一条数据* @param tableName 表名* @param rowkey    主键* @param cfName    列族* @param qualifier 列名* @param data   数据* @return*/public static boolean putRow(String tableName,String rowkey,String cfName,String qualifier,String data){try(Table table=  HBaseConn.getTable(tableName)){Put put=new Put(Bytes.toBytes(rowkey));put.addColumn(Bytes.toBytes(cfName), Bytes.toBytes(qualifier), Bytes.toBytes(data));table.put(put);}catch (Exception e){e.printStackTrace();}return true;}/*** 批量添加数据* @param tableName 表名* @param puts      数据列表* @return*/public static boolean putRows(String tableName,List<Put> puts){try(Table table=  HBaseConn.getTable(tableName)){table.put(puts);}catch (Exception e){e.printStackTrace();}return true;}/*** 通过rowkey查询数据* @param tableName 表名* @param rowkey    rowkey* @return* @throws IOException*/public static Result getRow(String tableName,String rowkey) throws IOException {try(Table table=HBaseConn.getTable(tableName)){Get get=new Get(Bytes.toBytes(rowkey));return table.get(get);}catch (Exception e){e.printStackTrace();}return null;}/*** 通过scan 查询数据* @param tableName 表名* @param startRow  开始的row* @param endRow    结束的row* @return*/public static ResultScanner getScanner(String tableName,String startRow,String endRow){try(Table table=HBaseConn.getTable(tableName)){Scan scan=new Scan();scan.withStartRow(Bytes.toBytes(startRow));scan.withStopRow(Bytes.toBytes(endRow));scan.setCaching(1000);return  table.getScanner(scan);}catch (Exception e){e.printStackTrace();}return null;}/*** 通过过滤器查询数据* @param tableName 表名* @param startRow  开始* @param endRow    结束* @param flist     过滤器* @return*/public static ResultScanner getScanner(String tableName, String startRow, String endRow, FilterList flist){try(Table table=HBaseConn.getTable(tableName)){Scan scan=new Scan();scan.withStartRow(Bytes.toBytes(startRow));scan.withStopRow(Bytes.toBytes(endRow));scan.setFilter(flist);scan.setCaching(1000);return  table.getScanner(scan);}catch (Exception e){e.printStackTrace();}return null;}/*** 通过rowkey删除数据* @param tableName 表名* @param rowKey    rowkey* @return*/public static boolean deleteRow(String tableName,String rowKey){try(Table table=HBaseConn.getTable(tableName)){Delete delete=new Delete(Bytes.toBytes(rowKey));table.delete(delete);}catch (Exception e){e.printStackTrace();}return true;}/*** 删除列族* @param tableName 表名* @param cfName    列族* @return*/public static boolean deleteColumnFamily(String tableName,String cfName){try(HBaseAdmin admin= (HBaseAdmin) HBaseConn.getHbaseConn().getAdmin()){admin.deleteColumnFamily(TableName.valueOf(tableName),Bytes.toBytes(cfName));}catch (Exception e){e.printStackTrace();}return true;}/*** 删除列名* @param tableName  表名* @param rowKey     rowkey* @param cfName     列族* @param qualifier  列名* @return*/public static boolean deleteQualifier(String tableName,String rowKey,String cfName,String qualifier){try(Table table=HBaseConn.getTable(tableName)){Delete delete=new Delete(Bytes.toBytes(rowKey));delete.addColumn(Bytes.toBytes(cfName), Bytes.toBytes(qualifier));table.delete(delete);}catch (Exception e){e.printStackTrace();}return true;}}

Hbase常用数据库操作类相关推荐

  1. 小博老师解析Java核心技术 ——JDBC数据库操作类封装

    2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那 ...

  2. 一个简单而又灵活的数据库操作类

    一个简单而又灵活的数据库操作类 作者: 紫瑗 ***************************************************************************** ...

  3. php pdo 事物类,一个基于PDO的数据库操作类(新) 一个PDO事务实例

    /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录.多条记录,返回最 ...

  4. php pdo oracle操作类,一个基于PDO的数据库操作类

    百度之后决定使用PDO,至于为什么选择PDO,这里就不再多说,大家自己去百度下就能明白. 既然要换,那最基本就需要有个常用的数据库操作类,也就是所谓的增删改查等,昨晚捣腾了一晚,大致弄出了个雏形,以下 ...

  5. php建立数据库操作类,PHP数据库操作类的定义及使用

    PHP数据库操作类的定义及使用 点击数:8894  发布时间2017-08-01 22:33:39 class myconn{ private $host; private $user; privat ...

  6. php封装数据库操作类,php简单数据库操作类的封装

    本文实例为大家分享了php封装一个简单的数据库操作类,供大家参考,具体内容如下 一.代码 class conndb{ private $local; private $username; privat ...

  7. 我积累的数据库操作类(ASP.NET)

    http://guanvee.cnblogs.com/archive/2006/06/16/427510.html http://guanvee.cnblogs.com/archive/2006/06 ...

  8. SqlHelper 数据库操作类2

    using System; using System.Data; using System.Data.SqlClient; namespace lsb.DBUtility {     /// < ...

  9. php操作mysql的封装类_PHP封装的mysqli数据库操作类示例

    本文实例讲述了PHP封装的mysqli数据库操作类.分享给大家供大家参考,具体如下: 由于PHPMySQL操作在PHP5.4以下被弃用而推荐使用mysqli(MySQL Improvement),这里 ...

最新文章

  1. hdu 5277(最大团问题)
  2. 阿里巴巴集团成为国家信息安全漏洞库(CNNVD)技术支撑单位
  3. 1.对程序的看法 2013.8.1
  4. mysql gtid坑_通过mysqlbinlog --skip-gtids恢复后再备份可能造成的坑
  5. 单反相机很久没有更新产品问世了,真的已经被抛弃了吗?
  6. 被判赔联想525万,常程方回应:提起诉讼;百度自动驾驶出租车在京全面开放;VS Code 1.50版发布|极客头条
  7. 登陆界面网页代码_Opera Touch移动浏览器登陆iPad 并引入隐私浏览模式
  8. java sun包无法引用_关于java包的问题,自己创建一个包,里面放了源文件,却包外无法引用:具体见问题补充...
  9. 解决Android 11 获取不到Serial number方法
  10. android+复制大文件,手机SD卡无法复制拷贝大文件的解决方法
  11. matlab 矩阵左右乘除
  12. 01.奇特的一生——柳比歇夫一生的秘密
  13. 名帖82 苏轼 行楷《前赤壁赋诗卷》
  14. 美容店信息管理系统与小程序设计与实现
  15. Navicat设置表的外键
  16. linux内核 猪头 作用,漫谈Linux内核哈希表(1)
  17. 鸿蒙手表esim,华为Watch 3最早或于5月发布 采用鸿蒙系统并支持eSIM
  18. html表白知乎,为了今晚的表白,我爬了知乎热门撩妹情话
  19. 3318. 【BOI2013】Brunhilda的生日
  20. S7300转以太网模块作为Modbus主站 实现PLC与其它Modbus 设备的通讯

热门文章

  1. 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 1-转
  2. html页脚显示不出来,CSS实例:让页脚保持在未满屏页面的底部
  3. 多线程之 interrupt,interrupted,isInterrupted 方法区别
  4. 蓝桥杯 ADV-178 算法提高 简单加法
  5. L2-010. 排座位-PAT团体程序设计天梯赛GPLT(并查集)
  6. c++ string substr_用std::string_view替换leveldb的Slice
  7. python 检测端口是否被占用
  8. 对抗模拟浏览器的DDoS攻击
  9. 理解Load Average做好压力测试
  10. linux ext4,ext3的特点和区别