前言

封装了一些常用的方法

  • 添加一行数据
  • 创建表(单列族)
  • 创建表(多列族)
  • 删除表
  • 判断表是否存在
  • 获取一行数据(根据rowkey)
  • 获取某个列族某个列的某行数据
  • 打印出result(方便展示数据)

工具类

类代码:

package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException; public class HbaseUtil { private static ThreadLocal<Connection> connHolder= new ThreadLocal<Connection>(); /**
* 创建connection
* @throws IOException
*/
public static void makeHbaseConnection() throws IOException {
Connection connection = connHolder.get();
if (connection == null){
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","hadoop100,hadoop101,hadoop102");
conf.set("hbase.zookeeper.property.clientPort", "2181");
connection = ConnectionFactory.createConnection(conf);
connHolder.set(connection);
}
} /**
* 关闭连接
* @throws IOException
*/
public static void closeHbseConn() throws IOException {
Connection connection = connHolder.get();
if (connection != null){
connection.close();
connHolder.remove();
}
} /**
* 添加一行数据
* @param tableName 表名
* @param rowKey 行号
* @param family 列族
* @param column 列名
* @param value
* @throws IOException
*/
public static void insertData(String tableName,String rowKey,String family,String column,String value) throws IOException {
//获取连接
Connection connection = connHolder.get();
//获取表对象
Table table = connection.getTable(TableName.valueOf(tableName));
//获取添加对象
Put put = new Put(Bytes.toBytes(rowKey));
//添加一列
put.addColumn(Bytes.toBytes(family),Bytes.toBytes(column),Bytes.toBytes(value));
//添加
table.put(put);
//关闭
table.close(); } /**
* 创建表
* @param tableName
* @param family
* @throws IOException
*/
public static void createTable(String tableName,String family) throws IOException {
Connection connection = connHolder.get();
//获取admin
Admin admin = connection.getAdmin(); //列族描述对象建造者
ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(family));
//设置最大版本号
columnFamilyDescriptorBuilder.setMaxVersions(3);
//列族描述对象
ColumnFamilyDescriptor columnFamilyDescriptor = columnFamilyDescriptorBuilder.build(); //表描述对象建造者
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));
//将列族对象添加进表描述
tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptor);
//创建表描述对象
TableDescriptor tableDescriptor = tableDescriptorBuilder.build(); //创建表
admin.createTable(tableDescriptor);
admin.close();
} /**
* 创建表(多列族)
* @param tableName
* @param familys
* @throws IOException
*/
public static void createTable(String tableName,String[] familys) throws IOException {
Connection connection = connHolder.get();
//获取admin
Admin admin = connection.getAdmin();
//表描述对象建造者
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName)); for (String family : familys) {
//列族描述对象建造者
ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(family));
//设置最大版本号
columnFamilyDescriptorBuilder.setMaxVersions(3);
//将列族对象添加进表描述
tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptorBuilder.build());
} //创建表描述对象
TableDescriptor tableDescriptor = tableDescriptorBuilder.build(); //创建表
admin.createTable(tableDescriptor);
admin.close();
} /**
* 根据行号查询数据
* @param tableName
* @param rowKey
* @return
* @throws IOException
*/
public static Result selectDataByRowkey(String tableName,String rowKey) throws IOException {
Connection connection = connHolder.get();
//获取表
Table table = connection.getTable(TableName.valueOf(tableName));
//获取表描述对象
Get get = new Get(Bytes.toBytes(rowKey));
Result result = table.get(get);
return result;
} /**
* 获取某一列族中某一列的某一行数据
* @param tableName
* @param rowKey
* @param family
* @param column
* @return
* @throws IOException
*/
public static Result selectDataByCol(String tableName,String rowKey,String family,String column) throws IOException {
Connection connection = connHolder.get();
//获取表
Table table = connection.getTable(TableName.valueOf(tableName));
//获取表描述对象
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(family),Bytes.toBytes(column));
Result result = table.get(get);
return result; } /**
* 打印result
* @param result
*/
public static void showResult(Result result){
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
System.out.println("family:" + Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("qualifier:" + Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println("row:" + Bytes.toString(CellUtil.cloneRow(cell)));
System.out.println("value:" + Bytes.toString(CellUtil.cloneValue(cell)));
}
} /**
* 删除表
* @param tableName
* @throws IOException
*/
public static void deleteTable(String tableName) throws IOException {
Connection connection = connHolder.get();
Admin admin = connection.getAdmin();
TableName name = TableName.valueOf(tableName);
if (admin.tableExists(name)){
admin.deleteTable(name);
}
} /**
* 是否存在表
* @param tableName
* @return
* @throws IOException
*/
public static boolean tableExists(String tableName) throws IOException {
Connection connection = connHolder.get();
Admin admin = connection.getAdmin();
return admin.tableExists(TableName.valueOf(tableName));
} }

Hbase 简单封装(Hbase 2.0+ API)的更多相关文章

  1. 一起学HBase——简单介绍HBase各种组件

    HBase是谷歌BigTble的开源实现.谷歌的三篇论文拉开了大数据江湖的序幕,铸就了现在以Hadoop为主的大数据技术生态圈.而HBase是开源的大数据数据库,和传统的行式数据库不同的是,HBase ...

  2. 简单封装kafka相关的api

    一.针对于kafka版本 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>ka ...

  3. Phoenix(sql on hbase)简单介绍

    Phoenix(sql on hbase)简单介绍 介绍: Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC d ...

  4. Hbase简单配置与使用

    一. HBase的 二.基于Hadoop的HBase架构 HBase内置有zookeeper,但一般我们会有其他的Zookeeper集群来监管master和regionserver,Zookeeper ...

  5. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

  6. [How to] MapReduce on HBase ----- 简单二级索引的实现

    1.简介 MapReduce计算框架是二代hadoop的YARN一部分,能够提供大数据量的平行批处理.MR只提供了基本的计算方法,之所以能够使用在不用的数据格式上包括HBase表上是因为特定格式上的数 ...

  7. hbase简单操作

    hbase有hbase shell以及hbase 客户端api两种方式进行hbase数据库操作: 首先,hbase shell是在linux命令行进行操作,输入hbase shell命令,进入shel ...

  8. HBase操作(Shell与Java API)

    版权声明:本文为博主原创文章,未经博主允许不得转载.     转: http://blog.csdn.net/u013980127/article/details/52443155 下面代码在Hado ...

  9. 简单封装axios api

    可以在代码逻辑中写axios请求,处理请求结果,但是随着项目越来越大,代码会很繁琐,不容易维护,所以,可以把一些在所有请求中都要处理的逻辑抽取出来,封装成api方法.比如每次请求中都要判断是否有权限, ...

随机推荐

  1. Python图像读写方法对比

    训练视觉相关的神经网络模型时,总是要用到图像的读写.方法有很多,比如matplotlib.cv2.PIL等.下面比较几种读写方式,旨在选出一个最快的方式,提升训练速度. 实验标准 因为训练使用的框架是 ...

  2. VBA_headers_mapping

    Header Mapping--应对 Report Headers 的变化 Author : Collin_PXY 背景 在 RPA工作中,稳定的规则非常重要,因为 RPA项目就是基于规则而进行的,但 ...

  3. python_super()及继承顺序

    class A(object): def func(self): print('A') class B(A): def func(self): super().func() print('B') cl ...

  4. TCP拥塞控制原理

    一.何为拥塞 路由器无法处理高速到达的数据而被迫丢弃数据的现象叫做拥塞. 二.何为拥塞控制 TCP流量控制时为了平衡一个链接中接收方和发送方的速度匹配问题,当发送方发现发送速度大于接收方的接收速度时动 ...

  5. Life is Strange 完结感想

    Life is Strange 是一款剧情游戏.steam上第一章是免费的,也正是因为这个我才开始了解到这个游戏,玩完第一章后觉得还可以,就趁打折花了17块钱买了2-5章.应该是18年6月20号买的, ...

  6. 04 . Vue组件注册,数据交互,调试工具及组件插槽介绍及使用

    vue组件 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的 ...

  7. 【JVM第七篇】执行引擎

    写在前面的话:本文是在观看尚硅谷JVM教程后,整理的学习笔记.其观看地址如下:尚硅谷2020最新版宋红康JVM教程 执行引擎是Java虚拟机中的核心组成部分. 执行引擎的作用就是解析虚拟机字节码指令, ...

  8. 二、多线程及服务器编程总结------linux多线程服务端编程

  9. 在Service中创建全局Dialog对话框

    需要使用到悬浮窗权限 val builder: AlertDialog.Builder = AlertDialog.Builder(this)builder.setMessage("from ...

  10. BurpSuite 抓安卓app包

    认准夜神安卓模拟器,下了几个其他的模拟器都没有代理的功能 一.夜神安卓模拟器设置代理 1.点击右下角的设置 2.点击设置,进入到WIFI连接选项 3.进入列表后,鼠标点击wifi位置,长按左键,会出现 ...