前言

封装了一些常用的方法

  • 添加一行数据
  • 创建表(单列族)
  • 创建表(多列族)
  • 删除表
  • 判断表是否存在
  • 获取一行数据(根据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. 消息队列--ActiveMQ单机部署

    一.环境需求 1,Centos7环境 2,jdk 1.8+ 3,主机名的命名方式中不能含有'_'字符 二.软件包下载 1,下载路径 wget http://mirror.bit.edu.cn/apac ...

  2. Linux 下 GCC 的使用

    0 运行环境 本机系统:Windows 7 虚拟机软件:Oracle VM VirtualBox 6 虚拟机系统:CentOS 7 1 GCC 简介 GCC 是 GUN Compiler Collec ...

  3. Ques1,debug模式打不开的原因

    我尝试过一下三种方法打开pycharm环境下Flask的debug模式,但是都失败了.这三种具体方法如下: 1, 2, 3, 可以说上述方法都是常规操作,可是为啥还是不能打开debug模式呢? 因为: ...

  4. Js中函数声明和函数表达式的区别

    先看以下几段烧脑的代码: f();//=>? var f = function () { console.log("var"); } function f() { conso ...

  5. Fastdfs集群部署以及基本操作

    FastDFS引言 本地存储与分布式文件系统 本地存储的缺点: 是否有备份? 没有 成本角度? 贵 ​ 服务器 :用于计算 ---- cpu/内存 ​ 用于存储 ---- 硬盘大 存储瓶颈? 容量有限 ...

  6. 开发工具之Git(二)

    目录 四.Git安装与配置 (一)安装 (二)配置 (三)创建仓库 五.Git基本命令 六.Git分支 上一篇讲了Git的基本原理,建议没看过的同学先看看,然后这次我们来讲Git的具体操作和指令. 四 ...

  7. rpm命令介绍

    rpm安装不能指定安装位置. 查看系统安装了哪些软件:rpm -qa  rpm -qa |grep keyword      (q:query  a 是all)   查看软件是否安装: rpm -q  ...

  8. linux下制作软件包安装服务器

    linux下的软件包在有网络的情况下比较好安装,在ubuntu下,更新sourcelist,然后使用apt-get就可以很方便的安装包,在centos下面,更新yum列表,然后使用yum也可以进行方便 ...

  9. 没找到Wkhtmltopdf,报表会被显示为html

    windows10 odoo 打印报表时提示 没找到Wkhtmltopdf,报表会被显示为html 现象 原因 没有安装Wkhtmltopdf,没有配置环境变量,odoo在电脑系统中找不到Wkhtml ...

  10. Django启动服务的流程

    我晕,启动个服务浪费快一个小时的时间,记录下步骤吧. 1.D:\django\newworld>python manage.py runserver Performing system chec ...