Hbase教程(四) Hbase数据库JavaAPI接口

Hbase是一个分布式的、面向列的开源数据库,HDFS文件操作常有两种方式,一种是命令行方式,即Hbase提供了一套与Linux文件命令类似的命令行工具。另一种是JavaAPI,即利用Hbase的Java库,采用编程的方式操作Hbase数据库。

1 软件下载及安装

1.1 相关下载

1、JDK下载:Java是运行在JVM虚拟机 (Java Virtual Machine)之上,因此它的运行需要JDK环境的支持,建议下载Oracle官方发布的JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、Eclipse下载:开发Java程序需要强大的Java集成开发环境(IDE)支持,目前最新版本MARS-1版,下载地址:http://mirrors.neusoft.edu.cn/eclipse/technology/epp/downloads/release/mars/1/eclipse-jee-mars-1-win32-x86_64.zip

3、Maven下载:Maven是一个项目管理和构建自动化工具。使用Maven管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等。而Maven本身还支持多种插件,可以方便更灵活的控制项目。下载地址:http://maven.apache.org/download.html

1.2 软件安装

JDK安装位置:D:\software\Java\jdk1.8

Eclipse安装位置:D:\software\Eclipse\eclipse_jee

Maven安装位置:D:\software\Maven

1.3 环境配置

1、Java环境变量:http://jingyan.baidu.com/article/c85b7a6414f2ee003bac95d5.html

2、Maven环境变量:http://jingyan.baidu.com/article/cb5d61050b8ee7005d2fe04e.html

3、Maven修改默认仓库配置:

在Maven的安装目录下新建repository做为默认仓库:

<localRepository>D:\software\Maven\repository</localRepository>

找到修改D:\software\Maven\conf\settings.xml文件

4、Eclipse配置Maven:

启动Eclipse后,找到Window -> Preference-> Maven -> Installation -> Add按钮,设置安装目录:

设置setting.xml,找到Window -> Preference-> Maven -> User Settings,设置settings.xml文件:

1.4 创建项目

打开Eclipse,创建Maven项目,依次点击File-->New-->Maven Project ,请选中Createa simple project(skip archetype selection),之后点击Next:

填写Group id和artifact id, Version默认,Packaging默认为jar,Name,Description选填,其他的不填,之后点击Finish:

1.4 查看package视图

找到Package视图:Window -> ShowView-> Other,搜索PackageExplor

1.6 配置pom.xml文件

编写pom.xml文件引入依赖的Jar包:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hbase</groupId><artifactId>hbase</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>hbase</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><hbase.version>1.2.1</hbase.version></properties><dependencies><!--HBASE相关JAR包 --><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>${hbase.version}</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-common</artifactId><version>${hbase.version}</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-protocol</artifactId><version>${hbase.version}</version></dependency><!-- Hadoop相关Jar包 --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.1</version></dependency><dependency><groupId>jdk.tools</groupId><artifactId>jdk.tools</artifactId><version>1.8</version><scope>system</scope><systemPath>${JAVA_HOME}/lib/tools.jar</systemPath></dependency><!-- 测试相关JAR包 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>
</project>

2 Java- API操作

2.1 Java-API操作

Java代码实现:对Hbase数据库的增、删、改、查等操作。

代码实现:

package com.hadoop.hbase;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
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.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Before;
import org.junit.Test;/*** Java - API操作Hbase数据库* * @author yuanxw*/
public class HbaseDemo {// Hbase数据库配置private Configuration conf;// 数据库连接private Connection conn;@Beforepublic void init() {System.out.println("*********HbaseDemo.init(),执行开始*********");// 指定zk的地址,多个用“,”分割conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "Hadoop4:2181,Hadoop5:2181,Hadoop6:2181");try {conn = ConnectionFactory.createConnection(conf);} catch (IOException e) {e.printStackTrace();}System.out.println("*********HbaseDemo.init(),执行结束*********");}/*** 创建表* * @throws IOException*/@Testpublic void testCreateTable() throws IOException {System.out.println("*********HbaseDemo.testCreateTable(),执行开始*********");// 获得管理员HBaseAdmin admin = (HBaseAdmin) conn.getAdmin();// 创建表HTableDescriptor studentTable = new HTableDescriptor(TableName.valueOf("student"));// 添加[student_info、school_info]列族HColumnDescriptor studentInfo = new HColumnDescriptor("student_info");HColumnDescriptor schoolInfo = new HColumnDescriptor("school_info");// 设置student_info 最大版本为:3studentInfo.setMaxVersions(3);// 将列族添加到表中studentTable.addFamily(studentInfo);studentTable.addFamily(schoolInfo);// 创建表student表admin.createTable(studentTable);// 关闭链接admin.close();System.out.println("*********HbaseDemo.testCreateTable(),执行完毕*********");}/*** 插入数据*/@Testpublic void testPut() {System.out.println("*********HbaseDemo.testPut(),执行开始*********");try {// 通过表名获得表对象HTable table = (HTable) conn.getTable(TableName.valueOf("student"));// 插入rowkey行键Put put = new Put(Bytes.toBytes("rowkey001"));put.addColumn(Bytes.toBytes("student_info"), Bytes.toBytes("seq_no"), Bytes.toBytes("001"));put.addColumn(Bytes.toBytes("student_info"), Bytes.toBytes("real_name"), Bytes.toBytes("wangjiajia"));put.addColumn(Bytes.toBytes("student_info"), Bytes.toBytes("student_name"), Bytes.toBytes("王佳佳"));put.addColumn(Bytes.toBytes("student_info"), Bytes.toBytes("school_seq_no"), Bytes.toBytes("s001"));table.put(put);table.close();} catch (IOException e) {e.printStackTrace();}System.out.println("*********HbaseDemo.testPut(),执行完毕*********");}/*** 批量插入数据*/@Testpublic void testPuts() {System.out.println("*********HbaseDemo.testPuts(),执行开始*********");// 通过表名获得表对象try {HTable table = (HTable) conn.getTable(TableName.valueOf("student"));List<Put> puts = new ArrayList<Put>(10000);for (int i = 1; i <= 1000050; i++) {// 插入rowkey行键Put put = new Put(Bytes.toBytes("rowkey" + i));put.addColumn(Bytes.toBytes("school_info"), Bytes.toBytes("school_seq_no"),Bytes.toBytes("seq_no" + i));puts.add(put);if (i % 10000 == 0) {table.put(puts);puts = new ArrayList<Put>(10000);}}table.put(puts);table.close();} catch (IOException e) {e.printStackTrace();}System.out.println("*********HbaseDemo.testPuts(),执行完毕*********");}/*** 查询当条数据*/@Testpublic void testGet() {System.out.println("*********HbaseDemo.testGet(),执行开始*********");// 通过表名获得表对象try {// 获得表HTable table = (HTable) conn.getTable(TableName.valueOf("student"));// 通过Rowkey获得行Get get = new Get(Bytes.toBytes("rowkey1000"));Result result = table.get(get);// 查询Hbase获得结果byte[] bytes = result.getValue(Bytes.toBytes("school_info"), Bytes.toBytes("school_seq_no"));String str = Bytes.toString(bytes);// 打印输出的结果System.out.println(str);table.close();} catch (IOException e) {e.printStackTrace();}System.out.println("*********HbaseDemo.testGet(),执行完毕*********");}/*** 查询区间数据*/@Testpublic void testScan() {System.out.println("*********HbaseDemo.testScan(),执行开始*********");// 通过表名获得表对象try {// 获得表HTable table = (HTable) conn.getTable(TableName.valueOf("student"));// 查询rowkey10000到rowkey15000的范围的数据Scan scan = new Scan(Bytes.toBytes("rowkey10000"), Bytes.toBytes("rowkey15000"));ResultScanner resultScanner = table.getScanner(scan);for (Result result : resultScanner) {byte[] bytes = result.getValue(Bytes.toBytes("school_info"), Bytes.toBytes("school_seq_no"));String str = Bytes.toString(bytes);System.out.println(str);}table.close();} catch (IOException e) {e.printStackTrace();}System.out.println("*********HbaseDemo.testScan(),执行完毕*********");}/*** 删除数据*/@Testpublic void testDelete() {System.out.println("*********HbaseDemo.testDelete(),执行开始*********");// 通过表名获得表对象try {// 获得表HTable table = (HTable) conn.getTable(TableName.valueOf("student"));Delete delete = new Delete(Bytes.toBytes("rowkey1000050"));table.delete(delete);table.close();} catch (IOException e) {e.printStackTrace();}System.out.println("*********HbaseDemo.testDelete(),执行完毕*********");}
}

2.2 执行结果

1、创建hbase表:

2、插入一条数据:

3、批量插入数据:

4、查询单条数据:

5、查询区间数据:

6、删除数据

--以上为《Hbase教程(四) Hbase数据库JavaAPI接口》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

——厚积薄发(yuanxw)

Hbase教程(四) Hbase数据库JavaAPI接口相关推荐

  1. Hbase教程(二) Hbase数据库Shell命令

    Hbase教程(二) Hbase数据库Shell命令 1 Hbase- Shell命令 Hbase是分布式是一个分布式的.面向列的开源数据库,Hbase也提供了Shell命令对数据库增.删.改.查的权 ...

  2. Laravel教程 四:数据库和Eloquent

    Laravel教程 四:数据库和Eloquent 此文章为原创文章,未经同意,禁止转载. Eloquent Database 上一篇写了一些Laravel Blade的基本用法和给视图传递变量的几种方 ...

  3. 大数据时代MongoDB、ES、Redis、HBase这四种数据库你应该懂

    数据库对互联网开发的重要性就不必多说了.作为大数据和AI时代的互联网er,如果你还是只懂MySQL,那你可就火星大发了.下面给大家总结下每个互联网er都必须懂的几种数据库产品. MongoDB Mon ...

  4. HBase学习(四) HBase API操作

    目录 准备工作 创建maven项目 添加依赖 API操作 创建HBase连接 创建HBase表 删除表 向表中插入数据 查看数据 过滤器操作 全部代码 注意事项 准备工作 创建maven项目 添加依赖 ...

  5. MongoDB、ES、Redis、HBase四种数据库的简单区别

    MongoDB和Elasticsearch的对比 适用场景 两者其实在很多使用场景上有重合之处, 是可以互相替代, 比如日志收集 但是某些方面两者又各有特色,比如: 如果打算使用一个文档型的业务数据库 ...

  6. 【备忘】Mongodb/Redis/HBase NoSql视频教程2017数据库自学教程

    Mongodb/Redis/HBase NoSql视频教程2017数据库自学教程 下载地址:http://www.javaxxz.com/thread-321035-1-1.html

  7. 2021年大数据HBase(四):HBase的相关操作-客户端命令式!【建议收藏】

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-客户端命令式 1.进入HBase ...

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

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

  9. HBase(2) Java 操作 HBase 教程

    一.简介 在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概念,以及如何安装使用的方法. 那么,作为一名 Javaer,自然是希望用 Java 的方式来与 HBase 进 ...

最新文章

  1. VirtualBox虚拟机网络连接设置的四种方式
  2. 再说spring比较重,臃肿的看此文!!!!!
  3. 如何能够得到灵敏度更高的150kHz导航信号检测板?
  4. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群
  5. 阿里云存储_OSS对象存储
  6. U-Boot如何向内核传递Flash的分区信息
  7. 使用Spring 3.1和基于Java的配置构建RESTful Web服务,第2部分
  8. mysql 查看表格scott_在mysql中创建 oracle scott 用户的四个表及插入初始化数据
  9. SqlBulkCopy转载
  10. arm 基础:Nand Flash与Nor Flash的区别
  11. 用CAJViewer识别图片文字
  12. python中fn是什么意思_按Fn键Python 3
  13. Java中强、软、弱、虚引用
  14. 小米5 Android 8.0解bl,小米8 刷机 解账号BL锁 隐藏帐户 免授权解锁刷机包-刷机之家...
  15. 单片机串口通信c语言程序,pc计算机与单片机串口通信源程序
  16. 蓝湖怎么切图标注_如何用蓝湖做自动标注 ?
  17. wps里面如何使用计算机,wps表格中怎么在多行之间每行插一行?
  18. Excel实现数据可视化
  19. Spring之配置 multipartResolver 解析器、上传文件、处理文件
  20. fork,wait等基本系统调用

热门文章

  1. 一个程序员的创业历程
  2. cpu的故障及处理方法
  3. 网商银行年营收139亿:净利20.9亿 蚂蚁集团持股30%
  4. 7 、【股票的交易规则】
  5. 售卖方式变革:将企业营销战略、策略、战术的全程贯通
  6. QQ阅读开放平台终结网民碎片化“翻越”
  7. Unity官网赛车教程第二部分—调整赛车
  8. Xshell Plus
  9. 计算机量子极限,物理学家:计算机将在七八十年后穷途末路
  10. Oracle分批提交DML