hbase是Java编写的,当然也提供了Java的API来操作hbase。

如果你是使用虚拟机来安装配置hbase那么你需要配置一下hostname,不然JavaAPI访问虚拟机的时候会无法连接,请参考:

https://www.cnblogs.com/lay2017/p/9953371.html

同时请注意关闭防火墙,如果你的虚拟机启动会默认开启防火墙的话,你需要关闭。

一、依赖

hbase客户端依赖如下:

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

注意:hbase官方版本截止本文已经是2.1.1,但是这里使用1.2.0是由于官方文档并没有及时更新文档,所以对于client的使用你只能看到javadocs很不方便,亦或者你使用它文档的类的时候发现都是deprecated的线。

二、代码示例

以下的代码约200行,但内容并不复杂,仅有以下三块内容

1、在static块里面初始化了hbase的连接

2、main方法里面调用增删改查等JavaAPI接口,各个方法实现相应的内容

3、最后还有一个close方法

我们先看一下输出:

从输出内容我们看到,对表进行了删除、创建、列表查询,然后对表的单元格数据进行了新增、查询、遍历、删除

完整代码如下

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;import java.io.IOException;
import java.util.Arrays;/*** @Description java api* @Author lay* @Date 2018/11/12 13:10*/
public class HbaseJavaApiDemo {private static Configuration configuration;private static Connection connection;private static Admin admin;private static final String ENCODE = "UTF-8";static {// 创建configurationconfiguration = HBaseConfiguration.create();// 设置HBase的zk地址和端口configuration.set("hbase.zookeeper.quorum", "master");configuration.set("hbase.zookeeper.property.clientPort", "2181");try {connection = ConnectionFactory.createConnection(configuration);admin = connection.getAdmin();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) throws Exception {try {String table = "t_user";String row = "row1";String columnFamily = "cf_name";String column = "firstName";String value = "lay";deleteTable(table);createOrOverrideTable(table, columnFamily);listTables();putData(table, row, columnFamily, column, value);getData(table, row, columnFamily, column);scanData(table);deleteData(table, row, columnFamily, column);} finally {close();}}/*** 创建表* @param table 表名* @param columnFamily 列簇* @throws IOException*/public static void createOrOverrideTable(String table, String columnFamily) throws IOException {TableName tableName = TableName.valueOf(table);HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);// 添加一个列簇HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(columnFamily);tableDescriptor.addFamily(hColumnDescriptor);// 存在则删除
        deleteTable(table);admin.createTable(tableDescriptor);System.out.println(table + " 表创建完成");}/*** 列出所有表* @throws IOException*/public static void listTables() throws IOException {HTableDescriptor[] hTableDescriptors = admin.listTables();System.out.println("列出所有的表:");for (HTableDescriptor t : hTableDescriptors) {System.out.println(t.getTableName());}}/*** 删除表* @param table 表名* @throws IOException*/public static void deleteTable(String table) throws IOException {TableName tableName = TableName.valueOf(table);if (admin.tableExists(tableName)) {admin.disableTable(tableName);admin.deleteTable(tableName);System.out.println(table + " 存在并执行删除");}}/*** 添加数据* @param table 表名* @param row 行* @param columnFamily 列簇* @param column 列* @param value 值* @throws IOException*/public static void putData(String table, String row, String columnFamily, String column, String value) throws IOException {TableName tableName = TableName.valueOf(table);Put put = new Put(row.getBytes(ENCODE));put.addColumn(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE), value.getBytes(ENCODE));Table iTable = connection.getTable(tableName);iTable.put(put);iTable.close();System.out.println("数据添加完毕");}/*** 查询数据* @param table* @param row* @param columnFamily* @param column* @throws IOException*/public static void getData(String table, String row, String columnFamily, String column) throws IOException {TableName tableName = TableName.valueOf(table);Get get = new Get(row.getBytes(ENCODE));Table iTable = connection.getTable(tableName);Result result = iTable.get(get);byte[] data = result.getValue(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE));System.out.println("查询的数据:" + new String(data));iTable.close();}/*** 删除数据* @param table* @param row* @param columnFamily* @param column* @throws IOException*/public static void deleteData(String table, String row, String columnFamily, String column) throws IOException {TableName tableName = TableName.valueOf(table);Delete delete = new Delete(row.getBytes(ENCODE));delete.addColumn(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE));Table iTable = connection.getTable(tableName);iTable.delete(delete);iTable.close();System.out.println("数据删除完毕");}/*** 扫描数据* @param table* @throws IOException*/public static void scanData(String table) throws IOException {TableName tableName = TableName.valueOf(table);Scan scan = new Scan();Table iTable = connection.getTable(tableName);ResultScanner resultScanner = iTable.getScanner(scan);for (Result r : resultScanner) {Cell[] cells = r.rawCells();System.out.println("遍历的数据结果:");Arrays.stream(cells).forEach(cell -> {String value = new String(CellUtil.cloneValue(cell));System.out.println(value);});}iTable.close();}/*** 关闭admin和connection*/public static void close() {if (admin != null) {try {admin.close();} catch (IOException e) {throw new RuntimeException(e);}}if (connection != null) {try {connection.close();} catch (IOException e) {throw new RuntimeException(e);}}}}

转载于:https://www.cnblogs.com/lay2017/p/9953901.html

三、hbase JavaAPI相关推荐

  1. HBase 学习(三) JavaAPI的使用

    一,前言 二,HBaseDDL 三,HBaseDML 正文 一,前言 一般情况下不会直接在Shell对Hbase进行操作,而是通过提高的API,我们先对Java的API进行介绍. 二,HBaseDDL ...

  2. Apache HBase JavaAPI 查询数据

    文章目录 初始化一批数据到HBase当中用于查询 按照rowkey进行查询获取所有列的所有值 按照rowkey查询指定列族下面的指定列的值 通过startRowKey和endRowKey进行扫描 通过 ...

  3. Hbase JavaAPi介绍和使用示例(待更新)

    Hbase客户端Api使用笔记 开发环境 系统 版本 下载地址 Idea 1.4 下载 hbase 1.1.0 下载 环境搭建 在这里我用的是Maven创建项目 初步预览 java类 HBase数据模 ...

  4. HBase:(三)HBase API

    HBase:(一)安装部署_只爱大锅饭的博客-CSDN博客hbase部署安装https://blog.csdn.net/qq_35370485/article/details/130988364?sp ...

  5. hbase 单机 java api,HBase学习(一)hbase安装(单机模式)和javaapi客户端访问hbase例子...

    平时习惯了window下开发,而Hbase只能在linux环境下运行,所以决定把hbase安装一台虚拟机上,在windows下运行eclipse连接虚拟机里的hbase 因为对linux命令了解不多, ...

  6. java api操作hbase_通过JavaAPI使用HBase

    1.准备工作 (1) 启动zookeeper服务,我的是在本地启动zookeeper /usr/local/zookeeper/bin$ sudo zkServer.sh start (2) 启动HB ...

  7. Hbase从入门到入坑

    本博客已迁移至微信公众号!将不再更新 关注公众号即可获得免费学习资源,获得免费指导!!! 公众号后续将会持续更新clickhouse,sparkstreaming,flink,数仓建模,用户画像,实时 ...

  8. HBase应该知道的

    1 摘要 本文是一篇HBase学习综述,将会介绍HBase的特点.对比其他数据存储技术.架构.存储.数据结构.使用.过滤器等. 关于Phoenix on HBase,即Sql化的HBase服务,可以参 ...

  9. oracle+olh+hive,hadoop+hive+hbase的简单安装 | YallonKing

    hadoop+hive+hbase的简单安装 hadoop.hive.hbase下载地址:http://mirror.bit.edu.cn/apache/ (一)hadoop安装: 解压hadoop- ...

最新文章

  1. 计算机网络实验五,计算机网络(实验五).docx
  2. FLUSH TABLES WITH READ LOCK 和 LOCK TABLES
  3. go 调用winapi_golang 调用windows API 中文的处理
  4. ubuntu重启+sublime快捷键
  5. js点击取消按钮关闭当前弹框_UI设计中“取消按钮”的分析详解
  6. 卷成这样,非逼我用RTX 3090?(深度学习GPU平台种草
  7. 开放世界下的混合域适应 ——面向真实自然场景下的全新迁移学习范式
  8. 程序—java记事本
  9. 菜鸟学习Spring——初识Spring
  10. Resharper F12下载dll源码
  11. Jquery+WeUI开发移动APP应用
  12. maya 2017 linux 下载,Maya插件下载 Maya神级特效优化插件Soup For Maya 2017-2019 Win/Mac/Linux安装版 下载-脚本之家...
  13. java特别描述错误的是,关于javac命令作用的描述错误的是
  14. 解决 winedit 打开tex文件 reading error(亲测可行)
  15. 关于神经网络算法使用场景的思考
  16. HTML5 canvas基础使用
  17. delete 和 delete[]的区别
  18. 如何给C盘增大空间,无损
  19. linux 环境命令行导出dmp文件
  20. a标签实现文件或者图片的下载

热门文章

  1. MySQL · 捉虫动态 · 并行复制外键约束问题二
  2. 电路图中常用的英文缩写的中文解释
  3. K8S 1.9.0二进制包部署(五)
  4. js+css实现骰子的随机转动
  5. VMWare安装Linux系统之CentOS-6.6
  6. Spring Boot + Elasticsearch
  7. mysql - AB复制
  8. 让Windows Server 2008+IIS 7+ASP.NET突破默认限制,支持海量并发连接数
  9. 详解Oracle介质恢复的内部过程
  10. 类型转换函数(三十五)