Hbase教程(四) Hbase数据库JavaAPI接口
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接口相关推荐
- Hbase教程(二) Hbase数据库Shell命令
Hbase教程(二) Hbase数据库Shell命令 1 Hbase- Shell命令 Hbase是分布式是一个分布式的.面向列的开源数据库,Hbase也提供了Shell命令对数据库增.删.改.查的权 ...
- Laravel教程 四:数据库和Eloquent
Laravel教程 四:数据库和Eloquent 此文章为原创文章,未经同意,禁止转载. Eloquent Database 上一篇写了一些Laravel Blade的基本用法和给视图传递变量的几种方 ...
- 大数据时代MongoDB、ES、Redis、HBase这四种数据库你应该懂
数据库对互联网开发的重要性就不必多说了.作为大数据和AI时代的互联网er,如果你还是只懂MySQL,那你可就火星大发了.下面给大家总结下每个互联网er都必须懂的几种数据库产品. MongoDB Mon ...
- HBase学习(四) HBase API操作
目录 准备工作 创建maven项目 添加依赖 API操作 创建HBase连接 创建HBase表 删除表 向表中插入数据 查看数据 过滤器操作 全部代码 注意事项 准备工作 创建maven项目 添加依赖 ...
- MongoDB、ES、Redis、HBase四种数据库的简单区别
MongoDB和Elasticsearch的对比 适用场景 两者其实在很多使用场景上有重合之处, 是可以互相替代, 比如日志收集 但是某些方面两者又各有特色,比如: 如果打算使用一个文档型的业务数据库 ...
- 【备忘】Mongodb/Redis/HBase NoSql视频教程2017数据库自学教程
Mongodb/Redis/HBase NoSql视频教程2017数据库自学教程 下载地址:http://www.javaxxz.com/thread-321035-1-1.html
- 2021年大数据HBase(四):HBase的相关操作-客户端命令式!【建议收藏】
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-客户端命令式 1.进入HBase ...
- hbase 单机 java api,HBase学习(一)hbase安装(单机模式)和javaapi客户端访问hbase例子...
平时习惯了window下开发,而Hbase只能在linux环境下运行,所以决定把hbase安装一台虚拟机上,在windows下运行eclipse连接虚拟机里的hbase 因为对linux命令了解不多, ...
- HBase(2) Java 操作 HBase 教程
一.简介 在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概念,以及如何安装使用的方法. 那么,作为一名 Javaer,自然是希望用 Java 的方式来与 HBase 进 ...
最新文章
- VirtualBox虚拟机网络连接设置的四种方式
- 再说spring比较重,臃肿的看此文!!!!!
- 如何能够得到灵敏度更高的150kHz导航信号检测板?
- haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群
- 阿里云存储_OSS对象存储
- U-Boot如何向内核传递Flash的分区信息
- 使用Spring 3.1和基于Java的配置构建RESTful Web服务,第2部分
- mysql 查看表格scott_在mysql中创建 oracle scott 用户的四个表及插入初始化数据
- SqlBulkCopy转载
- arm 基础:Nand Flash与Nor Flash的区别
- 用CAJViewer识别图片文字
- python中fn是什么意思_按Fn键Python 3
- Java中强、软、弱、虚引用
- 小米5 Android 8.0解bl,小米8 刷机 解账号BL锁 隐藏帐户 免授权解锁刷机包-刷机之家...
- 单片机串口通信c语言程序,pc计算机与单片机串口通信源程序
- 蓝湖怎么切图标注_如何用蓝湖做自动标注 ?
- wps里面如何使用计算机,wps表格中怎么在多行之间每行插一行?
- Excel实现数据可视化
- Spring之配置 multipartResolver 解析器、上传文件、处理文件
- fork,wait等基本系统调用