一款优秀的数据库除了会提供客户端,还会提供编程语言接口,HBase 也不例外。HBase 除了支持使用 Shell 客户端来操作(请看《HBase Shell及其常用命令》),还提供了多种编程语言的接口,其中 Java API 是原生支持的,其它编程语言接口需要通过 Thrift 协议支持。

本节只讲解 Java 接口编程,其它编程语言接口请转到《HBase Thrift协议编程入门教程》。

HBase 官方代码包里含有原生访问客户端,由 Java 语言实现,相关的类在 org.apache.hadoop.hbase.client 包中,都是与 HBase 数据存储管理相关的 API。

例如,若要管理 HBase,则用 Admin 接口来创建、删除、更改表;若要向表格添加数据或查询数据,则使用 Table 接口等。

下面主要介绍 Admin 和 Table 接 口以及 HBaseConfiguration、HTableDescriptor、HClounmDescriptor、Put、Get、Result、Scan 这些类的功能和常用方法。

开发环境配置

使用 Java 开发 Hbase,只需要将用到的 HBase 库包加入引用路径即可。本节使用 Eclipse 集成开发环境进行编程,如果系统已经安装 Maven,可以创建 Maven 项目,在 pom.xml 配置 HBase 的依赖即可自动下载 jar 包。

下面讲解如何在 Eclipse 中手动导入 HBase 库包。

首先创建 Java 工程,然后鼠标右键单击工程名,选择属性,在“Java构建路径”→“库”→ “添加外部JAR”中找到 HBase 安装目录下的 lib 子目录,将需要的库包导入工程,即可进行基本的 HBase 操作,如下图所示。

然后在工程目录 src下新建类文件,在 Java 文件中导入需要的 HBase 包,如 HBase 的环境配置包、HBase 客户端接口、工具包等:

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.*;

import org.apache.hadoop.hbase.client.*;

import org.apache.hadoop.hbase.util.Bytes;

在使用过程中可以根据需要加入更多的包,如 HBase 的过滤器等。

构建 Java 客户端

在分布式环境下,客户端访问 HBase 需要通过 ZooKeeper 的地址和端口来获取当前活跃的 Master 和所需的 RegionServer 地址。因此需要先用 HBaseCongifiguration 类配置 ZooKeeper 的地址和端口,然后再使用 Connection 类建立连接。

示例代码如下:

public static Configuration conf;

public static Connection connection;

public void getconnect() throws IOException {

conf=HBaseConfiguration.create();

conf.set("hbase.zookeeper.quorum", "cm-cdh01");

conf.set("hbase.zookeeper.property.clientPort","2181");

try{

connection=ConnectionFactory.createConnection(conf);

} catch (IOException e) {

e.printStackTrace();

}

}

cm-cdh01 为 ZooKeeper 的地址,2181 为端口号。HBaseConfiguration.create() 方法用来创建相关配置,然后使用此配置信息进行数据库的连接。

表操作

连接数据库后,完成表的创建和删除。示例代码如下:

public void createtable() throws IOException{

TableName tableName = TableName.valueOf("Student");

Admin admin = connection.getAdmin();

if{admin.tableExists(tableName)) {

admin.disableTable(tableName);

admin.deleteTable(tableName);

System.out.printin(tableName.toString() + "is exist,delete it");

}

HTableDescriptor tdesc = new HTableDescriptor(tableName);

HColumnDescriptor colDesc = new HColumnDescriptor("Stulnfo");

tdesc.addFamily(colDesc);

tdesc.addFamily(new HColumnDescriptor("Grades"));

admin.createTable(tdesc);

admin.close();

}

其中,Admin 是 Java 的接口类型,在使用 Admin 时,必须调用 Connection.getAdmin() 方法返回一个子对象,然后用这个 Admin 接口来操作返回的子对象方法。

这个接口用于管理 HBase 数据库的表信息,包括创建、删除表和列出所有表项等,主要的方法参见下表。

Admin 接口的主要方法

方法返回类型

方法描述

void

abort(String why, Throwable e)

终止服务器或客户端

void

closeRegion(byte[] regionname, String serverName)

关闭 Region

void

createTableb(TableDescriptor, desc)

创建表

void

deleteTable(TableName tableName)

删除表

void

disableTable(TableName tableName)

使表无效

void

enableTable(TableName tableName)

使表有效

HTableDescriptor[]

listTables()

列出所有表项

HTableDescriptor[]

getTableDescriptor(TableName tableName)

获取表的详细信息

使用 get 方法获取某一行数据,代码示例如下:

public void getData() throws IOException{

Table table = connection.getTable(TableName.valueOf("Student"));

Get get = new Get(Bytes.toBytes("row1"));

Result result= table.get(get);

for (Cell cell:resuIt.rawCells()){

System.out.println(new String(CellUtil.getCellKeyAsString(cell)));

System.out.printin(new String(CellUtil.cloneFamily(cell)));

System.out.printin(new String(CellUtil.cloneQualifier(cell)));

System.out.printin(new String(CellUtil.cloneValue(cell)));

System.out.printin(cell.getTimestamp());

}

table.close();

}

通过 table.get() 方法进行查询后,将结果存入 result 中,其中包含多个键值对,本例中使用循环的方法将键值对逐个打印出来。CellUtil 接口提供每个单元格的定位值,如行键、列族、列和时间戳。

对 HBase 表的增、删、改、查,org.apache.hadoop.hbase.client 包提供了相应的类,除了已经举例说明的插入数据使用的 put 类、根据行键获取数据的 get 类外,还有进行全表扫描的 scan 类、 删除某行信息的 delete 类,甚至提供了扫描数据时进行过滤的 FilterList 类,读者可以在 HBase 官网获取详细信息。

JAVA入门Hwork,HBase Java编程入门教程相关推荐

  1. python编程入门-Python编程入门经典pdf(Python编程入门教程) 高清中文版

    Python编程入门经典pdf(Python编程入门教程)下载.Python编程入门经典pdf高清版帮助各位更好的进行Python编程的学习以及理解,最经典的课题,最深入的概念,让你在Python编程 ...

  2. python游戏编程入门源代码_python游戏编程入门源代码

    [实例简介] <Python游戏编程入门>的源代码,作者Jonathan S.Harbour 很好的资源,希望对学习python的同学有帮助,代码都可以运行 [实例截图] [核心代码] p ...

  3. Java面向对象程序开发——网络编程入门知识

    目录 七.网络编程入门知识 软件结构 网络通信协议 协议分类 网络编程三要素 TCP通信程序 概述 Socket类 构造方法 成员方法 ServerSocket类 构造方法 成员方法 简单的TCP网络 ...

  4. 电脑编程入门自学java_电脑编程入门自学Java指南

    随着Java近些年来的强劲发展,想要转行学习Java的初学者也越来越多了.然而,入门自学Java并不是一件轻松的事情.众所周知,万事开头难,尤其是没有编程语言基础的学习者,不仅仅需要付出更多的心血和汗 ...

  5. Java语言进阶:网络编程入门

    Java语言进阶:网络编程 网络编程入门 C/S C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. 特点: 客户端和服务器是分开的,需要下载客户 ...

  6. java nio 海子_java 网络编程入门-NIO

    这篇来讲解java网络编程之后高性能模型.NIO,有些书成为Non-blocking IO 非阻塞IO,这个是相对于BIO来说的.还有一种说法,New IO,顾名思义新的IO,这个是相对于旧版io的定 ...

  7. python编程入门视频推荐_Python编程入门2021攻略,书籍推荐,视频推荐,每天更新...

    写这篇文章的初衷 2018年我大学毕业,和很多人一样.大学里的世界,我也是整天LOL.打了4年,确还只是个黄金守门员.恋爱也想都不敢想.不过,话说回来,我拿了三年的奖学金.真的不是因为我学习认真,而是 ...

  8. python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课

    python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...

  9. python编程从入门到实践pdf_Python编程入门研读笔记(二)

    <Python的四则运算>是本单元的第二课,本课依然存在许多"坑".请各位老师放心,这些坑我已经帮你踩过了.如果您对我的教材研读笔记有任何意见或建议,请在文章底部留言O ...

最新文章

  1. 最受欢迎 Top 12 Python 开源框架,你都用过吗?
  2. 无法安装此计算机不存在英特尔,win2008serverr2intel网卡驱动无法安装不存在英特尔PRO适配器的解决方法...
  3. 域控制器配置系统要求
  4. 设计模式-模板方法(Template Method Patten)
  5. 基于 Consul 实现 MagicOnion(GRpc) 服务注册与发现
  6. sql企业管理器_Valentina Studio for mac(开源数据库管理器)
  7. php变量作用域(花括号、global、闭包)
  8. 语音识别技术是什么 语音识别技术应用介绍【图文】
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_1_递归概念分类注意事项...
  10. Atheros QCA8337交换芯片驱动开发
  11. myeclipse+JDK10+tomcat9 配置
  12. h5优秀控件_HTML5优秀图表控件
  13. 金融计算器 android,TVM金融计算器
  14. Workface通用核算项目的实现
  15. sql end关键字
  16. Mysql的ClassforName初探
  17. ubuntu firefox不能播放MP4,ubuntu Firefox flash 浏览器全屏置顶
  18. Excel时间做差,统计加班时长
  19. PYTHON对数值变量进行标准化,离散变量标签化
  20. 找寻自己的哲学世界?

热门文章

  1. 入网认证遇到的安全受控机制的问题---之Android 5.1.1 AppOps与严格模式
  2. API接口——睡眠带开放能力
  3. 粉丝不足5万的公众号,怎么在60秒内变现?
  4. 星河麒麟V10 安装达梦数据库DM8教程
  5. 自媒体必做的一个平台
  6. 人肉搜索与网络实名制
  7. truetype字体怎么转换成普通字体_TrueType字体作用|如何在文档嵌入 TrueType 字体中...
  8. Unity Shader 卡通渲染 (三):仿塞尔达荒野之息 Shader(顶点色控制细节)
  9. pandas的is in和not in
  10. 电脑屏幕亮度随背景颜色变化