Hbase常用数据库操作类
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常用数据库操作类相关推荐
- 小博老师解析Java核心技术 ——JDBC数据库操作类封装
2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那 ...
- 一个简单而又灵活的数据库操作类
一个简单而又灵活的数据库操作类 作者: 紫瑗 ***************************************************************************** ...
- php pdo 事物类,一个基于PDO的数据库操作类(新) 一个PDO事务实例
/* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录.多条记录,返回最 ...
- php pdo oracle操作类,一个基于PDO的数据库操作类
百度之后决定使用PDO,至于为什么选择PDO,这里就不再多说,大家自己去百度下就能明白. 既然要换,那最基本就需要有个常用的数据库操作类,也就是所谓的增删改查等,昨晚捣腾了一晚,大致弄出了个雏形,以下 ...
- php建立数据库操作类,PHP数据库操作类的定义及使用
PHP数据库操作类的定义及使用 点击数:8894 发布时间2017-08-01 22:33:39 class myconn{ private $host; private $user; privat ...
- php封装数据库操作类,php简单数据库操作类的封装
本文实例为大家分享了php封装一个简单的数据库操作类,供大家参考,具体内容如下 一.代码 class conndb{ private $local; private $username; privat ...
- 我积累的数据库操作类(ASP.NET)
http://guanvee.cnblogs.com/archive/2006/06/16/427510.html http://guanvee.cnblogs.com/archive/2006/06 ...
- SqlHelper 数据库操作类2
using System; using System.Data; using System.Data.SqlClient; namespace lsb.DBUtility { /// < ...
- php操作mysql的封装类_PHP封装的mysqli数据库操作类示例
本文实例讲述了PHP封装的mysqli数据库操作类.分享给大家供大家参考,具体如下: 由于PHPMySQL操作在PHP5.4以下被弃用而推荐使用mysqli(MySQL Improvement),这里 ...
最新文章
- hdu 5277(最大团问题)
- 阿里巴巴集团成为国家信息安全漏洞库(CNNVD)技术支撑单位
- 1.对程序的看法 2013.8.1
- mysql gtid坑_通过mysqlbinlog --skip-gtids恢复后再备份可能造成的坑
- 单反相机很久没有更新产品问世了,真的已经被抛弃了吗?
- 被判赔联想525万,常程方回应:提起诉讼;百度自动驾驶出租车在京全面开放;VS Code 1.50版发布|极客头条
- 登陆界面网页代码_Opera Touch移动浏览器登陆iPad 并引入隐私浏览模式
- java sun包无法引用_关于java包的问题,自己创建一个包,里面放了源文件,却包外无法引用:具体见问题补充...
- 解决Android 11 获取不到Serial number方法
- android+复制大文件,手机SD卡无法复制拷贝大文件的解决方法
- matlab 矩阵左右乘除
- 01.奇特的一生——柳比歇夫一生的秘密
- 名帖82 苏轼 行楷《前赤壁赋诗卷》
- 美容店信息管理系统与小程序设计与实现
- Navicat设置表的外键
- linux内核 猪头 作用,漫谈Linux内核哈希表(1)
- 鸿蒙手表esim,华为Watch 3最早或于5月发布 采用鸿蒙系统并支持eSIM
- html表白知乎,为了今晚的表白,我爬了知乎热门撩妹情话
- 3318. 【BOI2013】Brunhilda的生日
- S7300转以太网模块作为Modbus主站 实现PLC与其它Modbus 设备的通讯
热门文章
- 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 1-转
- html页脚显示不出来,CSS实例:让页脚保持在未满屏页面的底部
- 多线程之 interrupt,interrupted,isInterrupted 方法区别
- 蓝桥杯 ADV-178 算法提高 简单加法
- L2-010. 排座位-PAT团体程序设计天梯赛GPLT(并查集)
- c++ string substr_用std::string_view替换leveldb的Slice
- python 检测端口是否被占用
- 对抗模拟浏览器的DDoS攻击
- 理解Load Average做好压力测试
- linux ext4,ext3的特点和区别